регулярное выражение с хэш-символом - PullRequest
1 голос
/ 22 ноября 2011

У меня проблемы с распознаванием потенциального хэш-символа. Я использую следующий шаблон, который распознает файлы формы: id-1321952010.xml. Некоторые из этих файлов могут содержать # перед идентификатором, поэтому: # id-1321952010.xml также необходимо подобрать.

В настоящее время для первоначального случая у меня есть:

QRegExp rxLogFileFormat("\\b^[a-zA-Z]+\\-[0-9]{10,10}\\.[xml]{3,3}$\\b");

Я пытался добавить '#?' до границы, но не может заставить его работать правильно, кто-нибудь может помочь.

1 Ответ

5 голосов
/ 22 ноября 2011

Простое добавление #? перед границей не позволит регулярному выражению соответствовать # id-1321952010.xml, потому что он будет искать начало строки (^) после того, как вы объявили, что может быть хэш перед ним, что является противоречивым правилом.

Для этого переместить разделитель начала строки в начало регулярного выражения за пределами ограниченного слова :

^#?\\b[a-zA-Z]+\\-[0-9]{10,10}\\.[xml]{3,3}\\b$

(также переместил разделитель конца строки за пределы слова, ограниченного для хорошей меры)

Кроме того,

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

^#?[a-zA-Z]+\\-[0-9]{10,10}\\.[xml]{3,3}$
...