1

次の問題を処理できる正規表現パターンを探しています。

(to make someone) happy (adj.)

「幸せ」という言葉だけを取得したいのですが、正規表現パターンは、一部のみが括弧内にある場合、行も処理する必要があります。

  • (to make someone) happy
  • happy (adj.)

私は次のことを試しました:"\s*\(.*\)" しかし、私は自分の考えにどういうわけか間違っています!

4

3 に答える 3

2

これは、3つのオプションすべての最初のキャプチャグループで正しい単語を取得します。

(?:\([^)]*\)\s*)?(\w+)(?:\s*\([^)]*\))?

いくつかの単語を取得したり、特殊文字を許可したりする場合は、調整してより寛容にすることができます。

(?:\([^)]*\)\s*)?([^()\n]+)(?:\s*\([^)]*\))?
于 2012-08-13T13:38:33.173 に答える
0

正規表現を試す(?:^|\))\s*([^\(\)]+?)\s*(?:\(|$)

于 2012-08-13T13:42:13.290 に答える
0

括弧で囲まれた 2 つのグループの間のテキストを見つけるための正規表現は次のとおりです。

/(?:^|\([^)]*\))([^(]*)(?:$|\([^)]*\))/m

内訳は次のとおりです。

  1. 括弧内のテキストまたは行頭から始めます: (?:^|\([^)]*\)). これは、開き括弧から最初の閉じ括弧まで一致します
  2. 次に、括弧の外側のテキストを一致させて、 group に入れ([^(]*)ます。これは、次の開いている括弧まで一致します。
  3. 次に、括弧内または行末のテキストをさらに一致させます。(?:$|\([^)]*\))

複数行モード ( m)を使用して、文字列の先頭と末尾だけでなく、改行にも一致するように^しました。$

于 2012-08-13T13:35:08.333 に答える