2

ドットを除くすべての \b 文字を含む正規表現を使用する必要があります。

何かのようなもの[\b&&[^.]]

たとえば、次のテスト文字列では:

"somewhere deep down in some org.argouml.swingext classes and"

org.argouml.swingext文字列を一致させたいのですが、org.argouml文字列があまり一致しません。(Matcher.find()メソッドを使用)

私が使用する場合:\b(package_name)>\bそれらは両方とも一致しますが、これは私が望むものではありません。

私が使用した場合:\b(package_name)[\b&&[^\.]]私はPatternSyntaxException

私が使用した場合:\b(package_name)(\b&&[^\.])何も一致しません。

このリンクを使用して正規表現をテストします。

コンテキスト: プロジェクトのパッケージ名のリストがあり、いくつかのテキスト内でそれらを検索する必要があります。上記の例からわかるように、ネストされたパッケージが見つかった場合、外側のパッケージも一致させたくありません。

\sパッケージが行末にある可能性があるため、またはクラスに含まれる文字など:の他の非単語文字がその後に続く可能性があるため、最後に文字クラスを使用していません。を減算したいだけです。\b クラスから。)\b

誰かがこれを行う方法を知っていれば、私はとても感謝しています:)ありがとう

4

2 に答える 2

0

ここでは否定的な先読みが機能します。

\borg.argouml(?!\.)\b

Java 文字列リテラルでは、正規表現のバックスラッシュをエスケープする必要があることに注意してください。

"\\borg.argouml(?!\\.)\\b"
于 2010-08-11T12:38:37.257 に答える
0

単純に使用しない理由:

\b\w+(\.\w+)+\b

参考までに、文字ではなく位置に一致するPatternSyntaxExceptionため、ポップアップが表示されます。\b文字クラスは常に 1 文字と一致するため、\b(単語境界) を文字クラス内に配置すると、例外がスローされます。

于 2010-08-11T12:59:19.353 に答える