2016-01-22 7 views
4

Как найти такие строки в файлеРегулярное выражение для матча

########  this_is_a_line.sh  ######## 

Я попытался ниже регулярное выражение, но оно не работает

(#)+()+(A-Za-z0-9_)+(.sh)()+(#)+ 

Но это не похоже на работу. Может ли кто-нибудь сообщить мне, что не так?

ответ

6

Вы использовали (...) (a capturing group) вместо [...] (a character class). Используйте класс символов:

#+ +[A-Za-z0-9_]+\.sh +#+ 
    ^^^^^^^^^^^^^ 

См regex demo (обратите внимание, большинство групп захвата излишни здесь, и я удалил их, и . должны быть экранированы, чтобы соответствовать буквальное точка.).

The [A-Za-z0-9_]+ матчи 1 или более букв, цифр или _.

В (A-Za-z0-9_)+ матчи 1 или более последовательности из A-Za-z0-9_ (см demo).

Кроме того, в Java, вы можете использовать \w, чтобы соответствовать [A-Za-z0-9_] и shorten your regex к

#+ +\w+\.sh +#+ 

Не забывайте, что вам нужно удвоить каждый \ в строке шаблона в Java (String pattern = "#+ +\\w+\\.sh +#+";).

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