构建正则表达式模式以适应所有这些单词

Posted

技术标签:

【中文标题】构建正则表达式模式以适应所有这些单词【英文标题】:Building Regex pattern to accommodate all these words 【发布时间】:2021-12-08 05:22:40 【问题描述】:

我正在构建一个正则表达式代码模式来查找从日志中提取以下单词。

我当前的正则表达式代码是[A-Z0-9a-z-]8,36

使用上述正则表达式代码识别以下单词。

a60a4c82-82ea-4ff3-ac64-f4450d45e72e
0222bfb3
2110122003513063314

需要修改正则表达式代码以使用上述正则表达式代码适应/识别以下字符串。 任何关于修改当前正则表达式查询以在单个正则表达式中实现所有字符串的建议/帮助都将非常重要。

      Current string                         Required String

SAR-+96599853915-63aa6d10-2-2Mobile           SAR-+96599853915-63aa6d10-2-2
63AA6CBDMobile                                63AA6CBD
<CSError>                                     CSError

“Mobile”一词是另一个字段,但由于它在日志中的 srting 之间没有空格,因此 Mobile 词会附加字符串,这就是我不希望字符串中出现“Mobile”的原因。

提前致谢。

【问题讨论】:

我不确定我是否理解,但也许您想在字符类中添加+?即[A-Z0-9a-z+-]8,36?为什么“移动”部分被忽略了?请edit这个问题并尝试解释您要匹配的确切规则。 【参考方案1】:

你可以使用

(?:(?!Mobile)[A-Z0-9a-z+-])7,36

请参阅regex demo。

它匹配不以Mobile 字符序列开头的任何 ASCII 字母、数字、+- 字符的 7 到 36 次出现。

【讨论】:

以上是关于构建正则表达式模式以适应所有这些单词的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式提取骆驼大小写字符串的所有单词?

匹配除以单词开头之外的所有内容的模式[重复]

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

捕获包含模式正则表达式的每个单词

正则表达式用来根据某种匹配模式寻找字符串中的某些单词。

正则表达式 - 查找所有空格并忽略多行字符串中的连字符分隔的单词