次のシナリオで正規表現を正しく取得しようとしていますが、問題があります。以下はシナリオです。
私の文字列は次のようになります。
"The office timing (h) is from 8h to 18h."
上記の文字列から と が必要"8h"です"18h"。
これまでのところ、私はこれを行ってきました"[0-9]*[h]"。しかし、これは私"h"に 、"8h"およびを与えます"18h"。
専門家からのアイデアはありますか?
[0-9]*[h]と置き換えます[0-9]+h
1+回以上出現する必要があることを意味します。そしてh、それは独立しているので、括弧を付けても意味がありません。
\d+h読みやすくするために使用することもできます(\dは任意の数字に一致します)。
* を + (プラス記号) に置き換えます。
[0-9]+[h]
正規表現で話す:
* は、任意の数の前のトークンに一致することを意味します (0 を含む)
+ は、任意の数の前のトークンに一致することを意味します (少なくとも 1 つ)。
また、h を囲む角括弧は、単一の文字のみに一致するため冗長です。
*正規表現でゼロ回以上の繰り返しを意味します。代わりに正しい繰り返し回数を指定してください。
"\b\d{1,2}h\b"
\dは 1 桁を表します。
{1,2}1 回または 2 回の繰り返し (の\d) を意味します。
\b単語の先頭または末尾を意味します (パターンの前後に文字や数字を置いてはならないため)。
"h"または"123h"またはは見つかりません"18hertz"。
次の正規表現を使用できます。
\b\d+h\b
これでも役立ちます:[0-9][0-9]*hこれはと同等です[0-9]+h