2017-03-07 8 views
0

ハイフンの前後にある2つの文字列グループに一致させたいと思います。ただし、場合によってはハイフンもなくなる可能性があります。それでは、私が欲しいのです:" - "付きの正規表現マッチグループ

の "Hello World - これはテストです":グループ(1)=のHello World、グループは(2)=これはテスト

"Hello World" のである:グループ(1) = Hello World、グループ(2)が見つかりません

私は以下の正規表現のいくつかの亜種を試しましたが、私が望むように動作していません。

(.*?)(\-.*) 

答えて

1

正規表現はそれを行う必要があります...

([\w\s]+)(?:[\s-]?)(.*?)(?:\n|$) 

regex demo/explanation

+0

グレートを参照してください。なぜ "$"を追加すると違いが生じるのか説明できますか? $が何を意味するのか分かりませんが、最後に "$"を削除すると、文字列全体がグループ1に一致します。 – Yang

+0

@Yang '$'は改行(行の終わり)にマッチし、結果を削除しますグループ1のスティング全体の試合で – m87

2

、必要に応じて第2のグループがハイフンで始まっ
に一致する([^-]+?)\s*(?:-\s*(.+))?ような何か。

([^-]+?)     # (1) 
\s* 
(?: 
     - \s* 
     (.+)      # (2) 
)?