0

我正在尝试制作一个正则表达式来提取 , 之后的文本,First name:并且不包含标签。Last name:Email:

这是我在标签之间的文字。

<MyText>
First name: Chris
Last name: Jones
Email: cj@dsf.com
</myText>

我一直在玩这样的事情:/(Last name:).*?但这不起作用。有谁知道如何解决这个问题?

4

3 回答 3

1

我实际上并不了解您的脚本语言(正则表达式支持可能有所不同)。但是这样的事情应该有效:

/^.*?:(.*?)$/m

一些解释:

带有m修饰符 ( //m) 的正则表达式意味着匹配每行的开头^$结尾,而不是字符串的开头和结尾。

.*?:部分匹配Last name:, ,First name:等。并且因为它不在括号 ( ()) 之间,所以不会被捕获。

(.*?)部分匹配冒号 ( :) 之后的所有内容,并且因为$放置在它之后,所以它将匹配所有内容,直到行尾。它在括号之间,这意味着它将被捕获。


要回答您的编辑,请使用以下命令:

/^First name: (.*?)$/m
/^Last name: (.*?)$/m
/^Email: (.*?)$/m
于 2013-03-13T15:31:09.950 回答
1

使用 .NET 正则表达式,您可以使用积极的后向断言:

new Regex(@"(?<=Last name:).*");

但是,根据上下文,您可能必须小心 - JavaScript 正则表达式引擎不支持后向断言,因此您不能,例如,在 ASP.NET RegularExpressionValidator 中使用此客户端。

于 2013-03-13T15:32:55.467 回答
0

试试这个正则表达式:

/^.*?: (.*)$/
于 2013-03-13T15:30:42.820 回答