2011-03-02 96 views
1

您好,我真的很困扰这个问题;正则表达式模式匹配:仅使用模式的开始和结束进行匹配

我想用正则表达式来匹配模式的中间可以改变的模式的开始和结束。所以我想使用一个正则表达式来匹配不断的开始,并且不断的结束任何人都可以帮忙?

例如,该模式的开始是“/>”,并用“ABC”

我使用C#结束。

感谢

+1

请提供样品。 – 2011-03-02 11:09:48

+0

...请详细描述开始/结束可能看起来像什么(字母,数字,标点符号...)以及允许哪些文字介于两者之间。还请指定是否要在较大的文本中查找*这种模式,或者如果您希望*匹配给定的字符串与正则表达式。 – 2011-03-02 11:28:20

+0

例如,模式的开始是“/>”并以“abc”结尾..... – user101010101 2011-03-02 11:31:48

回答

4
^abc(.*)xyz$ 

将匹配寄托都与ABC开始,与XYZ结束。

0

您正在寻找的关键项目是^匹配行的开始和$匹配行的结尾。您可以在模式中使用这些字符来检查字符串开头或结尾的特定字符。

2

有几种选择:

比方说你有文字:

<foo/> hello first abc hello second abc <bar/> hello third abc 

我将呈现三大正则表达式,它们将匹配的内容:

/\/>.*abc/ 

将匹配:

/> hello first abc hello second abc <bar/> hello third abc 

相反匹配贪婪的,你也可以采取尽量少:

/\/>.*?abc/ 

这将匹配

/> hello first abc 
/> hello third abc 

但也许你想匹配的贪婪,而不是当一个标签被打开之间,比你可以为实例来:

/\/>[^<]*abc/ 

这WIL比赛

/> hello first abc hello second abc 
/> hello third abc 

如果您更加清晰地明确你想要什么,我能更清楚地说明我的回答。)

+0

我试图添加代码注释,但它变得非常混乱。我已经厌倦了实现你上面显示的内容,但是我无法使它工作,请你看看。 string pattern = @“/ \ /> [^ <] * abc /”; – user101010101 2011-03-02 14:21:07

+0

我注释了事实上的标准语法,斜杠之间。 Perl和类似的工具就是这样做的。在C#中,它只是一个字符串,并且不需要前导斜杠和尾部斜杠,也不需要转义斜杠,因此它将变成:string pattern = @“/> [^ <] * abc”; – markijbema 2011-03-02 14:35:53

0
^\/\u003E.*?abc$. 

这将匹配字符串开头“/>”,并以“ABC”,如结束“/> XYZABC “