在文本的开头 - 中间结尾使用野性字符的正则表达式

时间:2015-05-19 22:29:36

标签: c# regex

如果我想根据以下模式找到匹配项,我应该使用什么正则表达式:
Open Module Settings其中%abc%xyz%是通配符。

匹配的词是 -

您好的 ABC 你好的 XYZ

测试1的 ABC 的Test2的 XYZ Test3的

提前致谢。感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

简而言之:

.*abc.*xyz.*

这匹配包含第一个"abc"然后"xyz"的所有字词(包括您的示例字词)

答案 1 :(得分:2)

正则表达式为:

^[\s\S]*abc[\S\s]*xyz[\s\S]*$

[\s\S]一个包含所有间距字符\s的框和所有非间距字符\S;换句话说,所有人物。

如果您不想包含新行,只需使用:

^.*abc.*xyz.*$

.几乎匹配除新行之外的所有内容。

如果您想要允许新的行,空格等,可以使用:

^\S*abc\S*xyz\S*$

示例(在csharp交互式shell上)

$ csharp
Mono C# Shell, type "help;" for help

Enter statements below.
csharp> using System.Text.RegularExpressions;
csharp> Regex regex = new Regex(@"^[\s\S]*abc[\S\s]*xyz[\s\S]*$");
csharp> regex.Matches("HiabcHelloxyzHee");
{ HiabcHelloxyzHee }
csharp> regex.Matches("Test1abcTest2xyzTest3");
{ Test1abcTest2xyzTest3 }
csharp> regex.Matches("fooabcbar");             
{  }
csharp> regex.Matches("fooabcbarxyz");
{ fooabcbarxyz }
csharp> regex.Matches("fooabcbarxyz  dasd");
{ fooabcbarxyz  dasd }
csharp> regex.Matches("fooabc   barxyz  dasd");
{ fooabc   barxyz  dasd }