如何为mach特殊字符创建正则表达式

时间:2015-02-03 12:19:42

标签: c# regex

我想为mach这个字符串值创建一个正则表达式:

100[some digits][some digits | some words | @][some digits | some words | @][some digits]

示例:

100[1234567855][1122bb33@@aaa][222@ffff@@@][1234567890]#

我使用了这个正则表达式:

(100)\[(\d+)\]\[\[(\d+)|(\w+)|(\@)\[(\d+)|(\w+)|(\@)\]\[(\d+)\]#$

但它正常工作。 任何想法?

感谢任何帮助...

4 个答案:

答案 0 :(得分:1)

你的正则表达式在某些地方是错误的。

(100)\[(\d+)\]\[\[(\d+)|(\w+)|(\@)\[(\d+)|(\w+)|(\@)\]\[(\d+)\]#$
                ^^               ^^                ^
                 1               23                4
  • 1:复制\ [
  • 2:缺少+
  • 3:失踪\]
  • 4:缺少+

尝试:

(100)\[(\d+)\]\[((\d)|(\w)|(\@))+\]\[((\d)|(\w)|(\@))+\]\[(\d+)\]#$

答案 1 :(得分:1)

\w\d@放入字符类中,以匹配字词charcater或数字或@符号。

@"^100\[(\d+)\]\[([\d@\w]+)\]\[([\d@\w]+)\]\[(\d+)\]#$"

由于[是正则表达式中的特殊字符,因此您必须按顺序转义该字符以匹配文字[符号。 [\d@\w]+匹配一个或多个数字或字词或@

DEMO

答案 2 :(得分:0)

^(100)\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]#$

您可以改用它。参见演示。

https://regex101.com/r/vD5iH9/58

您可以通过在字符类中包含所有内容来提高正则表达式。

^(100)\[(\d+)\]\[([\da-zA-Z@]+)\]\[([\da-zA-Z@]+)\]\[(\d+)\]#$

您正在捕获(\d+)|(\w+)|(\@),而您的测试字符串中有@两次或三次。

答案 3 :(得分:0)

试试这个 这将确保有一个100后跟你想要的表达式。

^:表达的开头。

[^ 100]:以100

开头
^(.?$|[^100]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\]\[([^\]]*)\])#