Regex werkt niet in Java

Ik heb deze regex [a-zA-Z] \ d \ d \\ $ \ d \ d- \ d \ d \ d \ d en mijn waarde is A11 $ 12-9190 . Maar het is geen matching. Enige aanwijzingen?

0
Die regex is niet geldig.
toegevoegd de auteur Hovercraft Full Of Eels, de bron
Je ontsnapt \ voor $ en bereikt zo het einde van de string, maar je zoekt achteraf naar meer cijfers. Niet mogelijk.
toegevoegd de auteur FailedDev, de bron
Wat is de daadwerkelijke Java-reeks die u gebruikt?
toegevoegd de auteur millimoose, de bron

4 antwoord

Elke backslash \ moet worden geëscaped door een extra backslash, \\ , in java-patronen. Merk op dat uw backslash voor het dollarteken al is ontsnapt.

De resulterende regex zou zijn:

[a-zA-Z]\\d\\d\\$\\d\\d-\\d\\d\\d\\d
4
toegevoegd

Wat er in feite gebeurt, is dat Java aanneemt dat jouw \ d een escape-teken is voor de String, je moet het transformeren naar \\ d - de eerste \ om te ontsnappen aan de tweede \ die de d ontloopt voor de regex!

2
toegevoegd

Uw regex is niet geldig. b.v.

  String test = "A11$12-9190";
  String regex = "[a-zA-Z]\\d\\d\\$\\d\\d-\\d\\d\\d\\d";

  System.out.println(test.matches(regex));
1
toegevoegd

Ontsnapt u alle \ ? Als je een string hebt, moet je "\\ d" doen.

0
toegevoegd