2015-08-17 5 views
0

Я написал регулярное выражение как: - if [regexp {.*DisplayName: \"([0-9]+)\"} $line match print] , который выбирает все слово, которое содержит - 0-9 цифр в нем, в том же коде, я хочу, чтобы это выражение соответствовало алфавитам ,Нужна некоторая модификация регулярного выражения в tcl

может кому-то предоставить код для этого.

ответ

0

Просто добавьте A-Za-z внутри этого символьного класса, чтобы соответствовать цифрам, а также алфавитам.

if [regexp {.*DisplayName: \"([0-9A-Za-z]+)\"} 
+0

, если [регулярное выражение {* отображаемое_имя \ "([0-9A-запорожец z] +) \ "} это A-Za-z без какого-либо пространства? –

+0

ya, вот что я сказал .. –

+0

Вы можете использовать '\ w' вместо' [0-9A-Za-z] '; хотя он немного отличается, он имеет тенденцию соответствовать тому, что люди действительно хотят, когда они используют этот набор. –

0

Я рекомендовал бы использовать классы POSIX:

{DisplayName: \"([[:digit:][:alpha:]]+)\"} 

См demo

См docs:

Преимущества символьных классов (как [:alpha:]) более явных диапазоны скобки (например, [a-z]) - это классы символов inc которые нелегко набирать на клавиатурах ASCII. Например, испанский язык включает в себя символ ñ. Он не попадает в диапазон [a-z], но он находится в классе символов Tcl 8.1 [:alpha:].

Или, есть даже лучшее решение для Вас: alnum класса, который включает в себя как цифры и буквы:.

{DisplayName: \"([[:alnum:]]+)\"} 
+0

@GauravKumar: Пожалуйста, проверьте этот подход. Я также хотел бы отметить, что вы не приняли ни одного ответа на свои вопросы. Пожалуйста, не забудьте принять ответы, которые работают на вас. –

+0

@gaurav, пожалуйста, прочитайте stackoverflow.com/help/someone-answers –

+0

@GauravKumar: И поскольку у вас теперь есть 15 репрессий, вы также можете найти ответы, которые оказались полезными для вас. –

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