如何在正则表达式中匹配包含^的字符串?

时间:2016-05-11 15:42:37

标签: c# regex

我尝试使用在线工具制作正则表达式,但没有成功。这是我需要匹配的字符串: -

  

27R4FF ^ 27R4FF文字直到结束

  • 始终以字母数字(不区分大小写)
  • 开头
  • 然后总是插入符号^(之前和之后没有空格)
  • 然后是字母数字字符串
  • 然后总是一个空格
  • 然后字符串直到结束。

这是对我不起作用的正则表达式: -

((?:[a-z][a-z]*[0-9]+[a-z0-9]*))(\^)((?:[a-z][a-z]*[0-9]+[a-z0-9]*)).*?((?:[a-z][a-z]+))

c#代码: -

string txt = "784SFS^784SFS Value is here";

var regs = @"((?:[a-z][a-z]*[0-9]+[a-z0-9]*))(\^)((?:[a-z][a-z]*[0-9]+[a-z0-9]*)).*?((?:[a-z][a-z]+))";
Regex r = new Regex(regs, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = r.Match(txt);
Console.Write(m.Success ? "matched" : "didn't match");
Console.ReadLine();

帮助表示感谢。感谢

3 个答案:

答案 0 :(得分:1)

Verbatim ^[^\W_]+\^[^\W_]+[ ].*$

 ^              # BOS
 [^\W_]+        # Alphanum
 \^             # Caret
 [^\W_]+        # Alphanum
 [ ]            # Space
 .*             # Anything
 $              # EOS

输出

 **  Grp 0 -  ( pos 0 , len 28 ) 
27R4FF^27R4FF Text until end  

答案 1 :(得分:1)

如果字符串“直到最后”,我才能得到#'应该匹配。

这适用于

27R4FF^27R4FF Text

^\w+\^\w+\s\w+$

如果最后有一些空格,请尝试

^\w+\^\w+\s[\w\s]+$

答案 2 :(得分:1)

试试这个:https://regex101.com/r/hD0hV0/2

^[\da-z]+\^[\da-z]+\s.*$

...或评论(如果您在代码中使用格式,则假设为RegexOptions.IgnorePatternWhitespace):

^          # always starts...
[\da-z]+   # ...with alphanumeric (case-insensitive)
\^         # then always caret sign ^ (no space before & after)
[\da-z]+   # then alphanumeric string
\s         # then always one white space
.*         # then string...
$          # ...until end.

其他答案实际上并不符合你所描述的(在撰写本文时),因为\ w匹配下划线而你没有提到对“最后字符串”的任何限制。