使用正则表达式过滤字符串
Filter strings using regular expression
我想使用正则表达式在文本文件中查找满足以下所有要求的多个字符串。
- 长度为 3
- 全部由大写字母组成
- 第一个字符不是 'A'
- 第二个字符不是 'J'
- 第三个字符不是 'K'
我从这个开始:/[A-Z]{3}/
但出于某种原因,它也匹配小写的 3 个字母字符串。
这可能吗?任何指导表示赞赏。
您需要锚定正则表达式以匹配整行。否则,它将匹配一个长度超过 3,但在其中任意位置包含 3 个大写字母的字符串。
您可以为每个字符使用字符集。
/^[B-Z][A-IK-Z][A-JL-Z]$/
^
匹配行的开头。 [B-Z]
匹配任何不是 A
的大写字母,[A-IK-Z]
匹配除 J
之外的任何字母,[A-JL-Z]
匹配除 M
之外的任何字母。 $
匹配行尾。
尝试以下操作以 return 所有匹配项:/\b(?=[A-Z])[^A](?=[A-Z])[^J](?!=[A-Z])[^K]\b/g
它利用前瞻性 return 只有 3 个字母匹配并且可以相对容易地重复任何其他变体 A、J、K
另一个使用前瞻的解决方案:
^(?=[A-Z]{3}$)[^A][^J][^K]$
我想使用正则表达式在文本文件中查找满足以下所有要求的多个字符串。
- 长度为 3
- 全部由大写字母组成
- 第一个字符不是 'A'
- 第二个字符不是 'J'
- 第三个字符不是 'K'
我从这个开始:/[A-Z]{3}/
但出于某种原因,它也匹配小写的 3 个字母字符串。
这可能吗?任何指导表示赞赏。
您需要锚定正则表达式以匹配整行。否则,它将匹配一个长度超过 3,但在其中任意位置包含 3 个大写字母的字符串。
您可以为每个字符使用字符集。
/^[B-Z][A-IK-Z][A-JL-Z]$/
^
匹配行的开头。 [B-Z]
匹配任何不是 A
的大写字母,[A-IK-Z]
匹配除 J
之外的任何字母,[A-JL-Z]
匹配除 M
之外的任何字母。 $
匹配行尾。
尝试以下操作以 return 所有匹配项:/\b(?=[A-Z])[^A](?=[A-Z])[^J](?!=[A-Z])[^K]\b/g
它利用前瞻性 return 只有 3 个字母匹配并且可以相对容易地重复任何其他变体 A、J、K
另一个使用前瞻的解决方案:
^(?=[A-Z]{3}$)[^A][^J][^K]$