Java Regex не подходит, какие-либо объяснения? - PullRequest
1 голос
/ 25 апреля 2011

Регулярное выражение String:

"[Ff][uU][Nn][Cc] " 

Соответствует вводу:

"fUnC " 

Но не:

"func across( a, b )"

И я не понимаю почему ...

Я проверяю свои выражения здесь: http://www.regexplanet.com/simple/index.html

Я понял, что мне (тупо) нужно, чтобы мое регулярное выражение было "[Ff][uU][Nn][Cc] .*" для соответствия,

РЕШЕНО: Не используйте удобный метод Pattern.Matches(regex, input), если вы ищете, что составляет субматч.Вместо этого вы должны использовать метод Matcher.find().

Ответы [ 4 ]

4 голосов
/ 25 апреля 2011

Когда я использую тестер регулярных выражений, на который вы ссылаетесь, я вижу, что ваше регулярное выражение работает с find (), но не с match (). Это то, что я ожидаю - find () просто ищет совпадение с регулярным выражением в целевой строке, в то время как match () всегда пытается сопоставить всю строку.

0 голосов
/ 25 апреля 2011

Вы также пытались использовать тестер регулярных выражений, игнорируя регистр?Должен быть способ включить нечувствительность к регистру в сопоставителе регулярных выражений Java.

0 голосов
/ 25 апреля 2011

Может быть .... работает нормально. Но ваши строки там, и вы увидите, что MATCHES ложно, но replaceFirst и ReplaceAll работают нормально.

Если вы хотите, чтобы совпадения соответствовали действительности

добавить * в конце

0 голосов
/ 25 апреля 2011

"[Ff] [uU] [Nn] [Cc]. *" Может помочь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...