-2

字符串集可以是这样的。

1) anyNoOfcharacters< anycharacter> anyNoOfcharacters 。anyNoOfcharacters

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

3) anyNoOfcharacters " _ " anyNoOfcharacters 和一个 " # "

4) anyNoOfcharacters 和 anyNoOfdigits 后跟一个“#”

可以有一个单一的正则表达式可以验证所有上述字符串集吗?

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

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

任何人都可以根据我的要求为上述模式添加条件。

提前致谢..!!

4

2 回答 2

1

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

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

编辑

您的要求仍然很随意。让我们尝试定义一些特定的规则。我想也许我们想要:

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

- 或者 -

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

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

您现在可以更新您的问题以列出该模式的特定规则吗?对于模式的每个部分,我们需要知道:您期望什么样的字符或字符,以及其中可以连续出现多少个字符。例如,零个或多个、一个或多个、恰好一个等。

编辑 2

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

这是您的规则(以及我对“anyNoOfCharacters”的假设)翻译成正则表达式:

  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]*#)");

我猜这已经很接近了,但可能还不完全在那里。你有足够的地方可以把它拿来并根据你的需要进行改进吗?如果不是,请进一步澄清。

于 2013-03-21T05:02:54.693 回答
0

这就是你想要的

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

根据你的评论试试这个

Regex pattern = new Regex(@"(?:[^\s]*[_#\.][^\s]*)[^\s]+");
于 2013-03-21T05:09:04.437 回答