2

括弧のペア内にある次のドットを持つ単語を見つけるために使用できる正規表現パターンは何ですか?

なので。df.kj hlasfa ( asd. las kdfh. ) dfs adk jfh. a (sd.kf) jhd (dsk fh. ) dskfdf asdf dfs lkjh asdfdsfjkhlkjh ( asdf. )as fadf asf

望ましい結果は太字で示されています。

4

2 に答える 2

3

次の閉じ括弧の前に開き括弧がないことを表明する先読みを使用できます。

preg_match_all('/[a-zA-Z]+\.(?![a-zA-Z])(?=[^()]*\))/', $input, $matches);

に4つの一致があり$matchesます。

最初のネガティブな先読みは、コメントでHamZaが言及したケースを排除します。2番目の(正の)先読みは、次の開き括弧の前に閉じ括弧を見つけようとします。

ここに注意点があります。かっこをネストすると、これは崩れ始めます。some(text. (here))一致しませんtext.。一部のエンジンはそれらを部分的に処理できますが、ネストされたパターン(括弧を使用して発生する可能性があります)は、通常、正規表現の範囲を超えています。これが当てはまる場合は、文字列を手動で調べて括弧を数える方がよいでしょう。

于 2012-11-10T18:02:25.920 に答える
2

多くのオプションの1つは次のとおりです。

\b[a-zA-Z]+[.](?=[ )])(?=[^(]*[)])        
于 2012-11-10T18:48:14.730 に答える