8

次のシナリオで正規表現を正しく取得しようとしていますが、問題があります。以下はシナリオです。

私の文字列は次のようになります。

"The office timing (h) is from 8h to 18h."

上記の文字列から と が必要"8h"です"18h"

これまでのところ、私はこれを行ってきました"[0-9]*[h]"。しかし、これは私"h"に 、"8h"およびを与えます"18h"

専門家からのアイデアはありますか?

4

5 に答える 5

11

[0-9]*[h]と置き換えます[0-9]+h

1+回以上出現する必要があることを意味します。そしてh、それは独立しているので、括弧を付けても意味がありません。

\d+h読みやすくするために使用することもできます(\dは任意の数字に一致します)。

于 2012-05-28T14:16:09.937 に答える
3

* を + (プラス記号) に置き換えます。

[0-9]+[h]

正規表現で話す:

* は、任意の数の前のトークンに一致することを意味します (0 を含む)

+ は、任意の数の前のトークンに一致することを意味します (少なくとも 1 つ)。

また、h を囲む角括弧は、単一の文字のみに一致するため冗長です。

于 2012-05-28T14:18:57.280 に答える
3

*正規表現でゼロ回以上の繰り返しを意味します。代わりに正しい繰り返し回数を指定してください。

"\b\d{1,2}h\b"

\dは 1 桁を表します。

{1,2}1 回または 2 回の繰り返し (の\d) を意味します。

\b単語の先頭または末尾を意味します (パターンの前後に文字や数字を置いてはならないため)。

"h"または"123h"またはは見つかりません"18hertz"

于 2012-05-28T14:22:06.557 に答える
1

次の正規表現を使用できます。

\b\d+h\b
于 2012-05-28T14:17:04.940 に答える
-3

これでも役立ちます:[0-9][0-9]*hこれはと同等です[0-9]+h

于 2012-05-28T14:19:43.460 に答える