3

文字列にパターンが存在するかどうかを調べようとしています。

確認したいパターンは次のとおりです。

スペースまたは「#」で始まる文字列、
次に特定の文字列「value1」、その後にスペースまたはタブ、
「value2」、再びスペースまたはタブが続き、「value3」で
終わる文字列。


チェックするサンプル文字列は次のとおりです。

String str = "#  value1   values2 value3";

次の正規表現を試しましたが、うまくいきませんでした:

str.matches("^\\s+#\\s+value1\\s+value2\\s+value3");

上記のパターンは常に me を返しますfalse。正規表現について教えてください。どんな助けでも本当に感謝します。

4

3 に答える 3

4

これを試して: -

str.matches("^[ #]value1\\s+value2\\s+value3$");

[ #]- スペースまたは # に一致

\\s+- 1 つ以上のスペースに一致します。したがって、スペースまたはタブに一致します

: -文字列values2の代わりに持っていvalue2ます。

また、投稿した文字列の例には、先頭にaspaceと a の両方があります。しかし、あなたは文字列が aまたは a#で始まると言いました。したがって、最初の の後のスペース、またはスペースの前のスペースを削除すると、文字列と一致します。space###

投稿した現在のように、文字列の先頭でaspaceと aを一致させたい場合。この正規表現を使用する必要があります: -#String

str.matches("^[ #]\\svalue1\\s+value2\\s+value3$");
于 2012-10-25T16:06:25.397 に答える
1

ええと、その正規表現はその入力に対して失敗することを今すぐ言えます#

試す

str.matches("^#?\\s+value1\\s+value2\\s+value3$");

その正規表現は一致"# value1 value2 value3"するか" value1 value2 value3"、可変量の空白と一致する必要があります

于 2012-10-25T16:07:00.007 に答える