匹配后匹配行开头返回文本
我试图让REGEX在First name:
,Last name:
,Email:
之后提取文本并且不包含标签。匹配后匹配行开头返回文本
这是我在标签之间的文字。
<MyText>
First name: Chris
Last name: Jones
Email: [email protected]
</myText>
我一直在玩这样的事情:/(Last name:).*?
但这并不行。有谁知道如何解决这个问题?
使用.NET正则表达式,你可以使用正向后断言:
new Regex(@"(?<=Last name:).*");
根据上下文,你可能要但请小心 - JavaScript正则表达式引擎不支持lookbehind断言,因此您不能在ASP.NET RegularExpressionValidator中使用此客户端。
啊这是一个! “(? 2013-03-13 15:35:45
谢谢你这个工作的冠军! – 2013-03-13 15:55:03
试试这个正则表达式:
/^.*?: (.*)$/
对不起Champ,我想每个标签总共有三个正则表达式,第一个和最后一个电子邮件。返回后的文本: – 2013-03-13 15:33:44
我真的不知道你的脚本语言(正则表达式的支持可以区别)。但是,这样的事情应该工作:
/^.*?:(.*?)$/m
一些交代:
与m
修饰符(//m
)一个正则表达式表示^
和$
比赛的开始和结束每行,而不是开始和一个结束串。
该.*?:
部分匹配Last name:
,First name:
,等。并且因为它不在括号(()
)之间,所以不会捕获它。
(.*?)
部分匹配冒号后的所有内容(:
),并且由于$
放在它之后,它将匹配所有内容,直到行尾。它位于括号之间,意味着它将被捕获。
为了回答您的编辑,使用此:
/^First name: (.*?)$/m
/^Last name: (.*?)$/m
/^Email: (.*?)$/m
这不起作用。我希望每个标签总共有三个正则表达式 – 2013-03-13 15:31:55
@ChrisJones编辑了正则表达式来做到这一点 – 2013-03-13 15:35:54
再次感谢您的详细回复。 – 2013-03-13 15:55:20
正在使用哪种正则表达式的方言? – MattW 2013-03-13 15:30:05
感谢编辑Wouter! – 2013-03-13 15:30:25
@mattw我正在使用C# – 2013-03-13 15:30:48