次の問題を処理できる正規表現パターンを探しています。
(to make someone) happy (adj.)
「幸せ」という言葉だけを取得したいのですが、正規表現パターンは、一部のみが括弧内にある場合、行も処理する必要があります。
(to make someone) happy
happy (adj.)
私は次のことを試しました:"\s*\(.*\)"
しかし、私は自分の考えにどういうわけか間違っています!
次の問題を処理できる正規表現パターンを探しています。
(to make someone) happy (adj.)
「幸せ」という言葉だけを取得したいのですが、正規表現パターンは、一部のみが括弧内にある場合、行も処理する必要があります。
(to make someone) happy
happy (adj.)
私は次のことを試しました:"\s*\(.*\)"
しかし、私は自分の考えにどういうわけか間違っています!
これは、3つのオプションすべての最初のキャプチャグループで正しい単語を取得します。
(?:\([^)]*\)\s*)?(\w+)(?:\s*\([^)]*\))?
いくつかの単語を取得したり、特殊文字を許可したりする場合は、調整してより寛容にすることができます。
(?:\([^)]*\)\s*)?([^()\n]+)(?:\s*\([^)]*\))?
正規表現を試す(?:^|\))\s*([^\(\)]+?)\s*(?:\(|$)
括弧で囲まれた 2 つのグループの間のテキストを見つけるための正規表現は次のとおりです。
/(?:^|\([^)]*\))([^(]*)(?:$|\([^)]*\))/m
内訳は次のとおりです。
(?:^|\([^)]*\))
. これは、開き括弧から最初の閉じ括弧まで一致します([^(]*)
ます。これは、次の開いている括弧まで一致します。(?:$|\([^)]*\))
複数行モード ( m
)を使用して、文字列の先頭と末尾だけでなく、改行にも一致するように^
しました。$