gpt4 book ai didi

带有排除字符的正则表达式和另一个正则表达式

转载 作者:行者123 更新时间:2023-12-02 01:46:49 25 4
gpt4 key购买 nike

如何编写正则表达式来查找不包含某些字符(如 *#)的单词(无空格)和句子(如 level10 level2 - 它也应该是正则表达式 - level[0-9]+)。排除字符很简单 ([^\\s^#^*]+) 但如何排除这个 'level' 示例呢?

我想用数字排除字符和级别。

  1. 例子:
    • weesdlevel3fv - 由于“level3”不匹配
    • we3rlevelw4erw - 应该匹配 - 没有数字的水平
    • dfs3leveldfvws#3vd - 不应该匹配 - 级别很好,但出现了“#”字符
    • level4#level levelw4_level - 由于有空格,威胁作为两个单词 - 只有第二个单词应该匹配 - 没有带数字的级别,也没有像“#”或“*”这样的受限字符

最佳答案

看这个正则表达式:

/(?<=\s)(?!\S*[#*])(?!\S*level[0-9])\S+/

正则表达式解释:

  • (?<=\s)在空白序列之后断言位置。
  • (?!\S*[#*])断言序列中不存在 "#""*"
  • (?!\S*level[0-9])断言 level[0-9] 在序列中不匹配。
  • \S+现在我们的条件通过了,这个序列是有效的。继续使用 \S+\S++匹配整个序列。

要更专门地使用前瞻,您可以添加另一个 (?!\S*<false_to_assert>)组。

View a regex demo!


对于这种特殊情况,您可以 use a double negation trick :

/(?<=\s)(?!\S*level[0-9])[^\s#*]+(?=\s)/

Another regex demo.


阅读更多:

关于带有排除字符的正则表达式和另一个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25145307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com