我正在尝试制作一个正则表达式来提取 , 之后的文本,First name:
并且不包含标签。Last name:
Email:
这是我在标签之间的文字。
<MyText>
First name: Chris
Last name: Jones
Email: cj@dsf.com
</myText>
我一直在玩这样的事情:/(Last name:).*?
但这不起作用。有谁知道如何解决这个问题?
我实际上并不了解您的脚本语言(正则表达式支持可能有所不同)。但是这样的事情应该有效:
/^.*?:(.*?)$/m
一些解释:
带有m
修饰符 ( //m
) 的正则表达式意味着匹配每行的开头^
和$
结尾,而不是字符串的开头和结尾。
.*?:
部分匹配Last name:
, ,First name:
等。并且因为它不在括号 ( ()
) 之间,所以不会被捕获。
该(.*?)
部分匹配冒号 ( :
) 之后的所有内容,并且因为$
放置在它之后,所以它将匹配所有内容,直到行尾。它在括号之间,这意味着它将被捕获。
要回答您的编辑,请使用以下命令:
/^First name: (.*?)$/m
/^Last name: (.*?)$/m
/^Email: (.*?)$/m
使用 .NET 正则表达式,您可以使用积极的后向断言:
new Regex(@"(?<=Last name:).*");
但是,根据上下文,您可能必须小心 - JavaScript 正则表达式引擎不支持后向断言,因此您不能,例如,在 ASP.NET RegularExpressionValidator 中使用此客户端。
试试这个正则表达式:
/^.*?: (.*)$/