2015-05-08 3 views
1

У меня возникают проблемы с регулярным выражением в salesforce, apex. Поскольку я видел, что вершина использует тот же синтаксис и логику, что и apex, я также нацелил это на разработчиков Java. Я отлаживал строку, и это правильно. street равно 'str 3 B'.Java (Apex) RegEx не работает?

При использовании http://www.regexr.com/ регулярное выражение работает ('\ d \ w $').

Код:

Matcher hasString = Pattern.compile('\\d \\w$').matcher(street); 
    if(hasString.matches()) 

Моя проблема в том, что hasString.matches() решает false. Может ли кто-нибудь сказать мне, что я сделал что-то не так? Я попытался использовать его без $, с разным корпусом и т. Д., И я просто не могу заставить его работать.

Заранее благодарен!

ответ

2

Вам необходимо использовать find вместо matches для частичного ввода, так как matches пытается совместить полный текст ввода.

Matcher hasString = Pattern.compile("\\d \\w$").matcher(street); 
if(hasString.find()) { 
    // matched 
    System.out.println("Start position: " + hasString.start()); 
} 
+2

Ах, отлично. Не могу поверить, что я потратил час на это! Спасибо очень много –

+0

Не могли бы вы сказать мне, если что-то похожее на RegionStart() для использования в сочетании с .find? Поскольку это возвращает «0» с помощью метода .find() (очевидно). –

+0

Вы можете использовать 'hasString.start()' (см. Обновленный ответ) – anubhava

Смежные вопросы