2013-04-30 2 views
0

Я хочу, чтобы соответствовать выражение как это:Regular Expression Java не буквенно-цифровой символ соответствия

500 q 6h

Если число может быть любое целое число (таким образом 2 q 500h также является юридическим выражением).

Я пытаюсь соответствовать этому шаблону, используя регулярное выражение (\W|^)\d+ q \d+h(\W|$)

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

a500 q 6h быть не согласованы. Вместо этого он сопоставляется.

Кроме того, я хотел бы ожидать строку типа

(500 q 6h) быть согласованы, но это не соответствует.

Я не понимаю, что я делаю неправильно.

+0

^[0-9] + q [0-9] + h $ должно работать –

+0

Является ли выражение в вашем вопросе непосредственно скопировано и вставлено из вашего кода? Я спрашиваю, потому что '\ W \ $' почти наверняка неверен, и, вероятно, '+' отсутствует после второго '\ d'. Убедитесь, что ваш '\ W' на самом деле заглавными. –

+0

@CorvinMcpherson Это не соответствует '(500 q 6h)' хотя. –

ответ

0

Try (обратите внимание два раза подряд, необходимые для Java в Строковые литералы)

\\b\\d+ q \\d+h 

я использовал «слово border "regex \b, чтобы справиться с проблемой" предшествующего письма ".