0

文字が続かない単語の行をチェックする正規表現は(どれですか? やってみ(\w+)(\?!\()たのですがうまくいかず(\w+)[^\(]、最後の文字を[^\(]一部として何にでも合わせます。Dプログラミング言語を使用しています。

一致するものの例:

次の と一致する必要asdfがあります。

asdf blah 
asdf.beef
(asdf)

しかし、これらではありません:

asdf(blah)

ただし、 ではasdf(blah)blahが一致します。また、asdf blahandasdf.beefでは、blahandbeefも一致します。

4

3 に答える 3

4

Dの機能については何も知りません。perl regexp 言語をサポートしている場合は、次のようにできます。

 \w+\b(?!\()

(?!xxx) コンストラクトは、ゼロ幅の負の先読みに使用されます。括弧が後に続く単語の最後の文字以外のすべてに一致しないようにするには、 \b 単語境界が必要です。

編集:以下のM42の良いアイデアを微調整して、Dで機能するようにしました。これを試してください

 (\w+)\b([^\(]|$)

最初のキャプチャ グループには、関心のある単語が含まれている必要があります。

于 2010-12-17T04:17:36.673 に答える
1

これはどう:

/^\(?(\w+)\b(?:[^\(]|$)/

D コンパイラではテストされていませんが、Perl では動作します。

russ のコメントによると、(?:)コンストラクトは D では不明です:

/^\(?(\w+)\b([^\(]|$)/
于 2010-12-17T09:23:43.490 に答える
-1
(\w+)[^\(\w]

したがって、( と \w? の両方を否定しています。

于 2010-12-17T03:37:18.610 に答える