带哈希字符的正则表达式

时间:2011-11-22 08:57:08

标签: c++ regex qt qregexp

我无法识别潜在的哈希字符。我使用以下模式来识别表单的文件:id-1321952010.xml。其中一些文件可能在id之前包含#:因此:#id-1321952010.xml也需要被选中。

目前我的初步案例是:

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

我尝试添加'#?'在边界之前但无法使其正常工作,任何人都可以提供协助。

1 个答案:

答案 0 :(得分:5)

在边界之前简单地添加#?将不允许正则表达式匹配#id-1321952010.xml,因为它会在您声明之后搜索刺痛的开始(^)它之前可能有一个哈希,这是一个冲突的规则。

为此,move the start-of-string delimiter to the beginning of the regex, outside of the word bound

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

(还将字符串末尾分隔符移到了有效度量的单词之外)

此外,

基于@Mat的评论,如果你匹配字符串的开头和结尾,你可能根本不需要单词bounds,因为它们变得多余了。

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