2013-12-16 4 views
-2

При попытке кодирования JAVA на сайте codingbat.com я неоднократно обращался к Вопросу о функциональности регулярных выражений в java-строках. Я знаю, что есть методы JAVA, такие как match() или finder(), а также replace() и т. Д., Но это не то место, куда я хотел пойти.regex in java string

Возьмите быстрый взгляд на пример:

boolean doubleX(String str) { 
    if(str.equals("xx")){ 
    return true; 
    } else { 
    return false; 
    } 
} 

Интересно, смогу ли я использовать регулярные выражения в строке, чтобы добавить квантор, например

     <----- add regex here 
if(str.equals("x\[x.*]")){ 

ли вы сэры, быть так вид, чтобы объяснить мне, как я могу использовать регулярное выражение в строках? В конце концов, я понял, подумал я, возможно, даже без использования методов java regex, потому что escape-сигнал \ делает их пригодными для использования даже в простом коде. Неужели я ошибся?

+1

Что именно вы хотите сделать? 'String.equals' не поддерживает регулярное выражение,' String.matches' ** делает **! Поэтому вам нужно использовать 'if (str.matches (" x \ [x. *] "))', Если вы хотите проверить свою строку для регулярного выражения. – bobbel

+0

'Вы бы, господа': Семья SO состоит не только из« Sirs »:-) –

ответ

1

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

2

Использование String#matches(String)

if (str.matches(regex)) { 
    // ... 
} 

Это будет только узнать, если есть совпадение для регулярного выражения, хотя.


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

public boolean isX(String str, int count) { 
    return str.matches("^x{" + count + "}$"); 
} 
1

Вы можете использовать Pattern и Matcher класс

private final Pattern PATTERN = Pattern.compile("x\[x.*]"); 

, а затем

Matcher matcher = PATTERN.matcher(str); 
if (matcher.find()) 
    doSomething(); 
+0

спасибо за этот подход. Я знаю это, но потому что я делаю это на codingbat.com, я просто не могу импортировать необходимый пакет. уш – Paulquappe