117
1
元のテキストが、
”ああああああああああああああ
(いいい)
うううううう
えええええ
(おおおおおお)”
のようなとき、「ううううううえええええ」を取得するために「一致する文字列を取得」アクティビティに以下の指定をしました。
元のテキストはstring変数contentに格納しています。
パターン:「“\r\n(いいい)\r\n(.*)\r\n(おおおおおお)\r\n”」
結果:result
オプション:Multiline (複数行の為)
しかし、一行を書き込みで「result(0).Groups(1).ToString」
と指定すると「オブジェクト参照がオブジェクト インスタンスに設定されていません。」と一行を書き込みアクティビティでエラーになります。
どうしたら取得できるようになるでしょうか。
Yoichi
(Yoichi)
2
こんにちは
最初に正規表現での抽出条件を明確にした方が良いと思いますが、(いいい)と(おおおおおお)の間の文字列を取得したいということで良いでしょうか?
まず元のテキストが
うううううう
えええええ
となっていますので、ううううううえええええ とはマッチしません。
うううううう
えええええ
とマッチさせるには改行を含める必要がありますので、
(.*)
ではなく例えば ([\s\S]*)
とする必要があります。
また
元のテキストは(おおおおおお)"と改行無しで終わっていますが、
パターンの方が改行付きとなっているため、この通りですとマッチしません。
元のテキストの方を正とするならパターンの最後の\r\nを削除してください。
上記を総合しますと
"\r\n(いいい)\r\n([\s\S]*)\r\n(おおおおおお)"
を試してみてはと思います。なおMultilineオプションは不要です。
あと参考ですが、以下のようにすれば、result(0).Value として直接マッチ文字列を取得できると思います。
"(?<=\r\n(いいい)\r\n)[\s\S]*?(?=\r\n(おおおおおお))"
1 Like
117
3
こちらで解決いたしました。
大変勉強になりました。ありがとうございます。
1 Like
system
(system)
Closed
4
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.