2016-09-16 22 views
1

文字の前に文字がない場合にのみ正規表現を一致させたい場合は、私の場合は^(サーカンフレックス)です。文字の前に一致するパターンがありません

マイ正規表現:それをテストする /[^\^]\w+/g

本文: Test: ^Anotherword

マッチ: "テスト" および "Anotherword"、後者は回旋によって先行されていても。私は、最初に[^\^]を挿入することによって、これを防止しようとしていました。私はサーカフレックスにマッチさせようとするのではなく、それに続く言葉にもマッチしています。 「別の言葉」は一致してはならない。

[^\^] - これは、アクセント記号がその前にある場合正規表現が一致するのを止めるべきです。

\w+ - サングルフレックスが前に付いていない単語に一致します。

JavaScriptの制限のためにlookbehindは使用できません。

+0

'([^^] | ^)\ w +'必要であれば、置換に '$ 1'を書き戻します。いいえ、それは動作しますが、 'T'と' est'と一致しています – sln

+0

それはうまくいかないようですが、何か間違っていますか? http://regexr.com/3e855 –

+0

'([^^ \ w] | ^)\ w +'を参照してください。http://regexr.com/3e85b基本的に単語の境界があります。 – sln

答えて

1

使用([^^\w]|^)\w+
http://regexr.com/3e85bを参照)

同様^を除くながら、それは基本的にワード境界を注入します。 '^ T'
\w+estにマッチします
[^\w] = \W\b\w

は、そうでない場合[^^]が一致します。

周囲にキャプチャグループを置くと分かります。

+0

この '/([^^ \ - \。\ d])(\ - ?(\ d + \))\ d + \ * \ - ?(\ d + \。)?\ d +)/ g'は、私が実際に働きたいことで、あなたのソリューションを使って動作します。しかし、 '| ^'を追加しなくてもうまくいきました。どうしているのか説明できますか? –

+1

もちろん、JSでは、lookbehindの代わりに '(something | ^)'を使用すると、文字列/行の先頭に何かが読み込まれます。それが後ろに文字がない冒頭に一致させます。これは、例えば、否定的なlookbehindの '(?<!A)'をシミュレートします。ここで、行 '^'の先頭が満たされます。 – sln

-1

あなたはマッチングが厳格に禁止されていない場合http://www.regular-expressions.info/lookaround.html

+0

私は自分の質問に述べたように、私はJavaScriptを使用しているので否定的なlookbehindを使うことはできません –

0

上の説明を参照してください/(?<!^)\w+/g

を使用することができます。

(?:\^\w+)|(\w+):両方の式に一致しますが、^Anotherworldのグループは生成されません。

  • (?:\^\w+)^Kawabangaと一致しますが、グループは生成されません。
  • (\w+):他のすべてをグループ化します。

私の場合、^Anotherworldにグループを追加する場合は、単に?:を削除します。

+0

それはうまくいくでしょう、 ( '^ Another \') –

関連する問題