文字列str = "XYhaku(ABH1235-123548)";文字列の上から"マイナス記号"はこの正規表現にどのように?
は、私が唯一の「ABH1235-123548」を必要とし、これまでのところ、私は正規表現
Pattern.compile("ABH\\d+")
を作成したが、それはそれのために何が正しい正規表現false.so私を返します。
文字列str = "XYhaku(ABH1235-123548)";文字列の上から"マイナス記号"はこの正規表現にどのように?
は、私が唯一の「ABH1235-123548」を必要とし、これまでのところ、私は正規表現
Pattern.compile("ABH\\d+")
を作成したが、それはそれのために何が正しい正規表現false.so私を返します。
\d
は数字にのみ一致します。 A
とZ
間のすべての文字に一致する(それ以外の場合は、範囲指標として扱われるので-
は、文字クラスの最初または最後に配置されなければならないこと[A-Z]
を
Pattern.compile("ABH[\\d-]+")
注:他の文字が含まれるように、character classを使用、 例えば)。あなたがしたい場合は、
Pattern p = Pattern.compile("\\((?<data>[A-Z\\d]+\\-\\d+)\\)");
または:
文字クラス内の範囲指示子をいつでも( '\\ - ')エスケープできると思います。 – Rogue
そうです。私の個人的な好みは、正規表現に避けることができるとき、特にJavaではバックスラッシュを追加しないことですが、それは絶対条件ではありません。 –
これは複数の '-'シンボルを取得しないでしょうか? 'ABH \ d + - \ d +'で十分でしょうか? –
私は括弧内にあるものは何でもつかむだろう...もう一つの方法は、それはそれをエスケープすることです避けるために、それはあなたの文字列に2つのバックスラッシュを追加します(任意のかっこ)もっとオープンに:
Pattern p = Pattern.compile("\\((?<data>.+\\)\\)");
それからちょうどそれを引き抜きに:
String s = /* some input */;
Matcher m = p.matcher(s);
if (m.find()) { //just find first
String tag = m.group("data"); //ABH1235-123548
}
'Pattern.compile( "ABH [\\ D - ] +")を試してみてください'。 '\ d'には' -' –
thxは含まれていないことに注意してください。 –