次のシナリオで正規表現を正しく取得しようとしていますが、問題があります。以下はシナリオです。
私の文字列は次のようになります。
"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