C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 同じワードがある文の正規表現


(過去ログ 164 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■94832 / inTopicNo.1)  同じワードがある文の正規表現
  
□投稿者/ Tom (23回)-(2020/05/23(Sat) 20:03:12)

分類:[.NET 全般] 

c#

正規表現で文字を切り出しているのですが、文中に指定ワードが複数あると最後のものを拾ってしまいます。

Debug.WriteLine(Regex.Replace("ほにゃららABC01、ほげほげABC99うじゃ", ".*ABC([0-9]+)", "$1"));
で期待値は "01" なのですが "99うじゃ" が表示されます。
("うじゃ"が表示されるのも謎なのですが…)

先頭のモノを拾いたいのですが、どのような正規表現記載にすればよいのでしょうか?

賢者の方、ご教授いただけませんでしょうか?
引用返信 編集キー/
■94835 / inTopicNo.2)  Re[1]: 同じワードがある文の正規表現
□投稿者/ Hongliang (1033回)-(2020/05/23(Sat) 20:49:02)
正規表現で最短一致は ? を使って
.*?ABC([0-9]+)
のように記述します。
また初めのを表すために、文頭を指す ^ を付けた方がいいでしょう。
^.*?ABC([0-9]+)
そして、「切り出す」のが目的であれば、Replace()よりもMatch()を使った方が自然かなと思います。多少コードの記述量は増えるかもしれませんが。
引用返信 編集キー/
■94838 / inTopicNo.3)  Re[2]: 同じワードがある文の正規表現
□投稿者/ Tom (24回)-(2020/05/23(Sat) 22:02:42)
Hongliang さま


うまく行きました!
あと、Replace()よりもMatch()のほうが挙動も期待通りでした。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -