1. ホーム
  2. regex

[解決済み】regex オプションのワードマッチ

2022-02-18 07:53:15

質問

歌手、作詞家を抽出するための正規表現を作ろうとしています。歌詞の検索をオプションにするにはどうしたらいいでしょうか。

複数行の文字列の例

Fireworks Singer: Katy Perry
Vogue Singers: Madonna, Karen Lyricist: Madonna

Regex: /Singers?:(.\*)\s?Lyricists?:(.\*)/

これは2行目に正しくマッチし、次のように抽出されます。 Singers(Madonna, Karen)Lyricists(Madonna)

しかし、リリシストが存在しない最初の行ではうまくいきません。

作詞家検索をオプションにするには?

解決方法は?

マッチングさせたい部分を、捕捉しないグループで囲むことができます。 (?:). そうすると、正規表現では1つのユニットとして扱われ、その後に ? の後につけて、オプションにすることができます。例

/Singers?:(.*)\s?(?:Lyricists?:(.*))?/

なお、ここでは \s?

.*

(?:Lyricists?:(.*))

.*