0

First name:の後にテキストを抽出するための REGEX を作成しようとしていますがLast name:Email:ラベルは含まれていません。

これがタグ間の私のテキストです。

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

私はこのようなもので遊んでいます:/(Last name:).*?しかし、それはうまくいきません. これを解決する方法を知っている人はいますか?

4

3 に答える 3

1

私は実際にあなたのスクリプト言語を知りません (REGEX のサポートは異なる場合があります)。しかし、このようなものはうまくいくはずです:

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

いくつかの説明:

m修飾子 ( //m) を含む正規表現は、文字列の先頭と末尾ではなく、各行の先頭と末尾に一致すること^を意味し$ます。

その.*?:部分は、、、などに一致Last name:します。First name:かっこ ( ()) の間にないため、これはキャプチャされません。

この(.*?)部分は、コロン ( :)の後にあるすべてに一致し$、その後に が配置されているため、行末まですべてに一致します。括弧内にあり、キャプチャされることを意味します。


編集に答えるには、これを使用します。

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

.NET Regex では、肯定的な後読みアサーションを使用できます。

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

ただし、コンテキストによっては注意が必要な場合があります。JavaScript 正規表現エンジンは後読みアサーションをサポートしていないため、たとえば、このクライアント側を ASP.NET RegularExpressionValidator で使用することはできません。

于 2013-03-13T15:32:55.467 に答える
0

この正規表現を試してください:

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