0

次の例を見てください。

string1 = "aaxadfxasdf"

string2 = "asdfxadf"

string3 = "sadfas"

string2 に対してのみ x の一致を返すように、x に一致するパターンが必要です。

注: この質問の目的のために、Java 正規表現を使用する必要があります。また、コードにアクセスできないため、Java 正規表現オブジェクトによって返される一致の数を単純に確認することはできません。


みなさん、こんにちは。

回答ありがとうございます。そのうちのいくつかは私の質問に答えてくれます。私の例は、必要なほど具体的ではありませんでした。それでは、この癖をミックスに追加しましょう。

複数の文字に一致する場合はどうなりますか?

string4 = "This is a sentence!"
string5 = "This is just another sentence with some repetition in it. This is a   sentence"
string6 = "this is"

この場合、「文」が文字列に 1 回だけ出現する場合にのみ一致させたいと考えています。

また、例には示されていませんが、行全体を検索できる必要があります。

4

4 に答える 4

4
^[a-wy-z]+x[a-wy-z]+$

x文字だけを期待しているのか、それとも一致させたいの前後に記号や数字が含まれているのかわかりません。その場合は、次のよう[^x]に の代わりに使用します。[a-wy-z]

^[^x]+x[^x]+$

単独でも一致させたい場合は、記号を次のようxに置き換えます。+*

^[a-wy-z]*x[a-wy-z]*$
于 2012-05-03T20:05:14.107 に答える
4
^[^x]*x[^x]*$

ここで、最初の ^ は行頭 ($ は末尾) ですが、もう 1 つの ^ は文字セットの補数を意味します

于 2012-05-03T22:37:18.040 に答える
1

有限状態オートマトンでそれを行うことができるため、正規表現で確実に行うことができます。

(all the chars except x)*x(all the chars except x)*
于 2012-05-03T20:06:44.223 に答える
1

これは、'asdf' と 'adf' という単語で囲まれた任意の文字列に一致します (貪欲です)。

(?=asdf).+(?<=adf)

非貪欲:

(?=asdf)((?<!adf).)+(?<=adf)

より厳密な境界で:

^(?=asdf)((?<!adf).)+(?<=adf)$
于 2012-05-03T20:10:01.647 に答える