Помощь с регулярным выражением - PullRequest
2 голосов
/ 01 апреля 2009

У меня есть текстовый файл, и в каждой строке есть набор случайных строк, мне нужно выбрать только строки, содержащие только символы: 1234567890qwertyuiopasdfghjklzxcvbnm -._ ~

Я читаю построчно и проверяю char по char, я не думаю, что это лучший способ сделать это, и я думаю, что RegEx будет идеальным.

Так кто-нибудь может помочь с шаблоном для этого?

спасибо!

Ответы [ 3 ]

9 голосов
/ 01 апреля 2009
 /^[-0-9a-z._~]*$/

 ^       :: matches the start of a string/start of a line
 [       :: start of a character class, means match any one of the contained characters
 -       :: dash has a special meaning in character classes, so to avoid having it interpreted for its special meaning, list it first
 0-9     :: shorthand for 0123456789 in a character class
 a-z     :: shorthand for abcdefghijklmnopqrstuvwxyz in a character class
 ._~     :: means exactly these characters in a character class
 ]       :: end of the character class 
 *       :: match zero or more of the previous atom (in this case, the character class)
 $       :: matches the end of a string/end of a line
2 голосов
/ 01 апреля 2009

Если я вас хорошо понимаю, вы могли бы пойти с этим:

/^([-0-9a-zA-Z._~]\n)+$/

Он не учитывает регистр, проверяет конец строки и не соответствует пустой строке.

0 голосов
/ 01 апреля 2009

Не нужно много понимать, что регулярное выражение должно быть эквивалентно ^[1234567890qwertyuiopasdfghjklzxcvbnm\-._~]*$. Оттуда вы можете сузить его, заменив на 0-9, a-z и т. Д. Вы должны изучить основы регулярных выражений, прежде чем использовать ответы, которые вы получаете от других.

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