【问题标题】:Regex command to match combinations but not only uppercase letters正则表达式命令匹配组合,但不仅是大写字母
【发布时间】:2021-02-22 14:42:46
【问题描述】:

是否有正则表达式命令可以匹配大写字母、小写字母、下划线、括号、数字的所有组合,但不仅限于大写字母单词或仅数字?

我以为我有这个:

(/\b(?![A-Z]+\b)(?![0-9]+\b)[a-zA-Z0-9_{}]+\b/)

直到我遇到:ABC{hello}_HI_HelLo

这不匹配,我希望我的正则表达式匹配这个字符串。

似乎有一些带有否定前瞻的东西,因为它读取“ABC”并假设它只是一个大写字母单词,所以它不匹配字符串,只有“{”之后的部分匹配。

当您在“ABC”之后添加下划线时,您会得到一个匹配的字符串:ABC_{hello}_HI_HelLo

【问题讨论】:

  • 这是_{之间的单词边界你可以使用空白边界代替(?<!\S)(?![A-Z]+(?!\S))(?![0-9]+(?!\S))[a-zA-Z0-9_{}]+ regex101.com/r/JzHVUZ/1
  • 答案成功了吗?
  • 嗨!是的,它确实成功了!感谢您的帮助!

标签: regex regex-group


【解决方案1】:

_{ 之间存在单词边界

您可以改为在左侧(?<!\S) 和右侧(?!\S) 断言空白边界。

模式匹配:

  • (?<!\S) 向左声明空白边界
  • (?![A-Z]+(?!\S)) 断言不仅是大写字符,右边还有一个空白边界
  • (?![0-9]+(?!\S)) 断言不仅是数字,右边还有一个空白边界
  • [a-zA-Z0-9_{}]+ 匹配任何列出的 1 次或多次出现

Regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    相关资源
    最近更新 更多