匹配序列的正则表达式

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:04:54

字符串集可以像这样:

1) anyNoOfcharacters anyNoOfcharacters。anyNoOfcharacters

2) anyNoOfcharacters anynoof字符和' #'(作为最后一个字符串)

3) anyNoOfcharacters " _ " anyNoOfcharacters和" # "

4) anyNoOfcharacters and anyNoOfdigits后跟一个" #"

是否存在一个可以验证上述所有字符串集的正则表达式?

这是我到目前为止所做的…

 Regex pattern = new Regex(@"^[a-zA-Z0-9'_]+[a-zA-Z0-9#.-] | ['b'w'd] |  ");

有没有人可以根据我的要求在上面的图案上添加条件?

提前感谢…!!

匹配序列的正则表达式

根据您的需求,这里有一个正则表达式,它应该匹配您列出的五个精确字符串中的任何一个。如果这不是你的意思,那么请澄清。

 Regex pattern = new Regex(@"(ads<r>_aimDate50ms'.Good)|(ads<t>Valid#)|(tactics_priorityT)|(tactics_SelectedADS#)|(ads3bValid#)");

编辑

你的要求还是很敷衍。让我们试着定义一些具体的规则。我想也许我们需要:

  • 一个或多个字母,后面跟着
  • 零个或多个字母、数字或下划线,后面跟着
  • 零或一个#字符

——OR——

  • 一个或多个字母,后面跟着
  • 零个或多个字母、数字或下划线,后面跟着
  • 正好一个<字符,后面跟着
  • 正好一个字母,后面跟着
  • 正好一个>字符,后面跟着
  • 一个或多个字母、数字、下划线或.字符,后面跟着
  • 零或一个#字符

这是正确的吗?这些规则将与你的例子相匹配,但它们仍然可能不是"正确的"。这就是我说你需要具体的意思。如果您可以清楚地描述模式是什么,那么您可以为它编写一个正则表达式。如果不能识别一组规则来描述模式,那么就没有办法将其转换为正则表达式。

你能把你的问题更新一下,列出这个模式的具体规则吗?对于模式的每一部分,我们都需要知道:你希望看到什么样的字符或字符,以及一行中可以出现多少字符。例如,零或多个,一个或多个,恰好一个,等等。

编辑2

根据你最新的问题,我想我可以试一试。当你说"anyNoOfCharacters"时,你并没有说明是什么类型的字符。但如果你指的是任何类型的字符,包括空格、标点符号等,那么正则表达式就不是很有用,因为它几乎可以匹配所有字符。所以我假设在这种情况下你只指字母。

以下是您的规则(以及我对"anyNoOfCharacters"的假设)翻译成regex:

  1. [A-Za-z]*<.>[A-Za-z]*'.[A-Za-z]*
  2. [A-Za-z]*<.>[A-Za-z]*#
  3. [A-Za-z]*_[A-Za-z]*#
  4. [A-Za-z0-9]*#

要将其纳入单个正则表达式,您可以通过将括号( )放在每个规则周围并在它们之间添加|来组合这些术语。因此,我们有:

 Regex pattern = new Regex(@"([A-Za-z]*<.>[A-Za-z]*'.[A-Za-z]*)|([A-Za-z]*<.>[A-Za-z]*#)|([A-Za-z]*_[A-Za-z]*#)|([A-Za-z0-9]*#)");

我猜这很接近,但可能还没有完全到位。你有足够的地方可以把它提炼成你需要的东西吗?

这是你想要的

Regex pattern = new Regex(@"[^'s]+");

根据你的评论试试这个

Regex pattern = new Regex(@"(?:[^'s]*[_#'.][^'s]*)[^'s]+");