带有散列字符的正则表达式
regular expression with hash character
我在识别潜在的哈希字符时遇到麻烦。我使用以下模式来识别表单文件: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}$
相关文章:
- 带有多个字符分隔符的正则表达式
- C++ [正则表达式] 如何提取给定的字符值
- C++正则表达式字符类不匹配
- 通过正则表达式拆分字符串会切断结果的第一个字母
- 正则表达式 - 匹配不遵循特定模式的字符
- 使用具有特殊字符的正则表达式标记 C++ 字符串
- 正则表达式:从模式字符串 1.string2'string3 中提取字符串,其中字符串 1 可以包含 '." 字符
- 提升正则表达式 cpp 用于查找 %% 之间的字符串,输出不包括 % 字符本身
- 如何使用正则表达式匹配不包含特殊字符(&、\、<、>、|、)的字符串,除非它们以反斜杠开头
- 将一个特定字符替换为正则表达式匹配中的另一个字符
- 修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)
- C++正则表达式中的特殊字符
- 使用正则表达式为每个连续的大写字符附加'.'
- C++正则表达式转义标点字符,如"."
- 正则表达式.查找所有带有非拉丁字符的单词
- 如何构造一个前面没有特定字符的正则表达式
- 正则表达式中的成对字符
- 如何在 C/C++ PCRE 正则表达式中使用 UTF-8 文字字符
- 正则表达式:捕获不带前导字符的字符串
- 正则表达式:仅限数字 + 字母数字 + 特殊字符