2014-12-17 2 views
0

Я пытаюсь создать регулярное выражение, которое должно соответствовать этим моделям: \n 700000000123Ищет советы для регулярных выражений

Я имею в виду "\n"+"white space"+"12 digits"

Так что я пробовал:

(\\\\)(n)(\\s)(\\d{12})

или что-то вроде этого:

(\\\\)(n)(\\s)(\\[0-9]{12})

Но он все еще не работает. для меня {12} означает повторение цифры \d или [0-9], 12 раз?

Моя идея заключается в ява код, который может проверить, если строка содержит это регулярное выражение:

Boolean result = false; 

String string_to_match = "a random string \n 700000000123" 
String re1="(\\\\)";  
String re2="(n)"; 
String re3="(\\s)"; 
String re4="([0-9]{11})"; 

Pattern p = Pattern.compile(re1+re2+re3+re4, Pattern.CASE_INSENSITIVE | Pattern.DOTALL); 

if (string_to_match.contains(p.toString()){ 
     result = true; 
} 

Я пытался использовать: http://www.txt2re.com/, чтобы помочь мне.

Есть ли у вас какие-либо советы по созданию этого регулярного выражения? Я хотел бы понять, почему на данный момент это не сработает.

+0

is '\ n' Разрыв строки? Если да, вы используете его как один символ. '(\\\ n)' – Jens

ответ

0
^\\\\n\\s+\\d{12}$ 

Я думаю, это должно сработать для вас.

https://regex101.com/r/eZ0yP4/33

+0

действительно кажется хорошим хорошим регулярным выражением. – AlexDG

1

Вы должны использовать String#matches вместо String#contains, чтобы соответствовать регулярному выражению.

должен работать:

String re1="(\\n)";  
String re2="()"; 
String re3="(\\d{12})"; 

Pattern p = Pattern.compile(re1+re2+re3, Pattern.CASE_INSENSITIVE | Pattern.DOTALL); 
System.out.println("\n 700000000123".matches(p.pattern())); // true 

Или просто:

System.out.println("\n 700000000123".matches("(\n)()(\\d{12})")); // true 
1

Вы можете обернуть его в цепочке вызовов без ущерба для согласования всего входа.

Например:

String input = "\n 700000000123"; 
System.out.println(Pattern.compile("\n\\s\\d{12}").matcher(input).find()); 

Выход

true 
0

\ п будет работать только в машинах Unix. В Windows это \ r \ n. Используйте System.getProperty («line.separator»), если вы хотите, чтобы ваш код работал как в Linux, так и в окнах.

Используйте следующую

System.out.println (Pattern.compile (System.getProperty ("line.separator") + "\ s \ d {12}"). Согласовани (вход) .find ());