带有散列字符的正则表达式

regular expression with hash character

本文关键字:正则表达式 字符      更新时间:2023-10-16

我在识别潜在的哈希字符时遇到麻烦。我使用以下模式来识别表单文件:id-1321952010.xml。其中一些文件可能在id之前包含#,因此:#id-1321952010.xml也需要拾取。

目前对于初始情况我有:

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

我试过添加"#?"

简单地在边界之前添加#?将不允许regex匹配#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}$