使用C#,我有一个小的3个正则表达式集:
(?i)(<title.*?>)(.+?)(</title>)(?i)ancyent (?=marinere)[a-zA-Z]{12}这个小文本是:
<html lang="en"> <head> <title>The Rime of the Ancyent Marinere (1798)</title> </head> <body> <h1>THE RIME OF THE ANCYENT MARINEREEEEEEEE, IN SEVEN PARTS.</h1>我得到了这段代码的匹配:
var matches = Regex.Matches(textFile, pattern.ToString(), RegexOptions.IgnoreCase);个别启动雷克斯的比赛数: 4。
<title>The Rime of the Ancyent Marinere (1798)</title>AncyentANCYENTMARINEREEEEE但如果我想用这种方式来写三首雷克斯,
((?i)(<title.*?>)(.+?)(</title>)|(?i)ancyent (?=marinere)|[a-zA-Z]{12})启动regex的匹配数为1: 3。
<title>The Rime of the Ancyent Marinere (1798)</title>ANCYENTMARINEREEEEE我的问题是:是否有可能使用由|运算符链接的多个正则表达式的复合正则表达式来获得所有匹配?
发布于 2013-12-11 18:17:48
简短回答:不。
较长的答案:否,因为单个正则表达式将不匹配同一子字符串两次。在第一个列表(Ancyent)中标记为2的匹配是与第一个匹配相同的子字符串的一部分。因为第一个匹配是由复合正则表达式的第一部分匹配的,所以得到了该匹配,然后子字符串Ancyent已经被使用,并且将不会被复合regex的第二部分匹配。
https://stackoverflow.com/questions/20526664
复制相似问题