gpt4 book ai didi

c# - 是否可以为这种类型的文本编写正则表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 19:33:43 25 4
gpt4 key购买 nike

我需要为我的公司编写一个“选项符号”的正则表达式,以便我们可以在我们的网站上验证这些符号。

一个期权品种由两部分组成:

Part1         Part2
_ _ _ _ _ _ | _ _ _ _ _ _ _ _ _

我可以为第 2 部分编写一个正则表达式,因为它相当简单。

但是,第 1 部分(前 6 个字符位置)可能有点复杂。

归结为:

  • 第 1 部分的总长度必须为 {6} 个字符。
  • 第一个位置必须有 {1,4} 个字母字符。
  • 之后,可以选择有{1}个数字字符。
  • 最后剩下的字符必须是空格,所以Part1一共是6个字符。

我遇到的问题是空格的数量根据其前面的字符数而变化。这让我觉得它不容易用常规语言表示。

我怎样才能避免像这样暴力破解它:

([A-Za-z]{1}[0-9]{1}[ ]{4}|
[A-Za-z]{2}[0-9]{1}[ ]{3}|
[A-Za-z]{3}[0-9]{1}[ ]{2}|
[A-Za-z]{4}[0-9]{1}[ ]{1}|
[A-Za-z]{1}[ ]{5}|
[A-Za-z]{2}[ ]{4}|
[A-Za-z]{3}[ ]{3}|
[A-Za-z]{4}[ ]{2}|
[A-Za-z]{5}[ ]{1})

以下是一些示例选项符号(请记住,忽略前 6 个字符以外的所有内容):

F     123456P12345678
CMG 123456P12345678
AAPL 123456P12345678
GOOG1 123456C12345678
F5 123456C12345678

最佳答案

您可以使用回顾断言:

^[A-Za-z]{1,4}\d? +\b(?<=^.{6})

解释:

^ : 匹配行或字符串的开头(取决于您是否设置了 RegexOptions.Multiline 选项)。

[A-Za-z]{1,4}\d? + : 匹配 1 到 4 个字母字符和一个可选数字,后跟至少一个空格

\b : 断言我们现在处于单词边界(即下一个字符是字母数字)

(?<=^.{6}) : 断言上面的匹配正好是六个字符长。

关于c# - 是否可以为这种类型的文本编写正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3311043/

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