0

特定の文字の組み合わせを検索している一連の文字列があります。数字の後に文字 m または M が続き、その後に数字が続き、その後に文字 f または F が続きます。

文字列の例は - "Class (4) 1m5f Good" - 太字のテキストは、文字列から抽出したいものです。

ここに私が持っているコードがありますが、動作しません。

Pattern distancePattern = Pattern.compile("\\^[0-9]{1}[m|M]{1}[0-9]{1}[f|F]{1}$\\");
Matcher distanceMatcher = distancePattern.matcher(raceDetails.toString());
while (distanceMatcher.find()) {
 String word= distanceMatcher.group(0);
 System.out.println(word);
}

誰かが私が間違っていることを提案できますか?

4

3 に答える 3

1

私は単語の境界を使用します\b

\b\d[mM]\d[fF]\b

Java の場合、バックスラッシュはエスケープされます。

\\b\\d[mM]\\d[fF]\\b

{1}余分な
[m|M]手段であるmか、|またはM

于 2013-08-19T12:56:45.530 に答える
0

正規表現の要件については、次のa digit, following by the letter m or M, followed by a digit, then followed by the letter f or Fように簡略化できます。

Pattern distancePattern = Pattern.compile("(?i)\\dm\\df");

どこ:

(?i) - For ignore case
\\d  - For digits [0-9]
于 2013-08-19T12:58:47.407 に答える