gpt4 book ai didi

c# - 很难找到在正则表达式中插入 "word exclusion"的位置

转载 作者:行者123 更新时间:2023-11-30 12:42:38 24 4
gpt4 key购买 nike

我知道排除单词的正则表达式,无论如何,它应该是 (!?wordToIgnore|wordToIgnore2|wordToIgnore3)

但我有一个现有的、复杂的正则表达式,我需要将其添加,但我对如何去做有点困惑。我对正则表达式还是很陌生,我花了很长时间才制作出这个特别的正则表达式,但我不确定将它插入何处或如何...

我的正则表达式是...

^(?!.*[ ]{2})(?!.*[']{2})(?!.*[-]{2})(?:[a-zA- Z0-9\:/\p{L}'-]{1,64}$)$

这应该只允许输入的人插入 1 到 64 个匹配该模式的字母,不能以空格、引号、双引号、特殊字符、破折号、转义字符等开头,并且只允许 a-z 两者大写和小写,可以包括空格、“:”、破折号和除开头以外的任何位置的引号。

但我想禁止他们使用某些词,所以我有这个我想被禁止的词列表,我只是想不出如何让它适合这里..我试着只粘贴整个 . ."阻止",但没有用。

?!the|and|or|a|given|some|that|this|then|than

有人遇到过这个吗?

最佳答案

ciel,首先,祝贺您尝试构建您的正则表达式规则到此为止。如果您想阅读有关各种排除的详细信息,我建议您看一下 Match (or replace) a pattern except in situations s1, s2, s3 etc

接下来,在您的特定情况下,我们可以通过以下方式处理您的正则表达式。

  1. 为了达成共识,让我们将所有负面环视更紧凑,将它们替换为单个 (?!.*(?: |-|'){2})
  2. 在您的字符类中,\: 只是对冒号进行了转义,这是不必要的,因此 : 就足够了。我假设您想添加一个反斜杠字符,如果是这样,我们需要使用 \\
  3. \p{L} 包含 [a-zA-Z],因此您可以删除 [a-zA-Z]。但是您确定要匹配任何脚本中的所有字母吗? (泰语等)。如果是这样,请记住在正则表达式字符串之后设置 u 标志。
  4. 对于应用于整个字符串的“坏词排除”,将其放置在与其他环视相同的位置,即在字符串的头部,但使用 .*您的其他排除项: (?!.*(?:wordToIgnore|wordToIgnore2|wordToIgnore3)) 哪个前瞻先出现并不重要,因为环视不会改变您在字符串中的位置。有关更多信息,请参阅 Mastering Lookahead and Lookbehind

这给了我们这个极好的正则表达式(我添加了不区分大小写的标志):

^(?i)(?!.*(?:wordToIgnore|wordToIgnore2|wordToIgnore3))(?!.*(?: |-|'){2})(?:[\\0-9 :/\p{L}'-]{1,64}$)$ 

当然,如果您不想要 unicode 字母,请将 \p{L} 替换为 a-z

此外,如果你想确保 wordToIgnore 是一个真实的单词,而不是嵌入的字符串(例如你不想要 cat 但你catalog 没问题),为先行规则添加边界:(?!.*\b(?:wordToIgnore|wordToIgnore2|wordToIgnore3)\b)

关于c# - 很难找到在正则表达式中插入 "word exclusion"的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875198/

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