0

次のような文字列をキャプチャしようとしています。

document.all._NameOfTag_ != null ;

サブストリングをキャプチャするにはどうすればよいですか?

document.all._NameOfTag_

およびタグ名:

_NameOfTag_

これまでの私の試み:

if($_line_ =~ m/document\.all\.(.*?).*/)
{

}

しかし、それは常に貪欲であり、_NameOfTag_ != null

4

3 に答える 3

6

(.*?)次の貪欲は常にすべてに一致するため、怠惰な人は常に何にも一致しません.*

より具体的にする必要があります:

if($_line_ =~ m/document\.all\.(\w+)/)

後の英数字にのみ一致します document.all.

于 2013-01-14T12:50:42.057 に答える
2

あなたの問題は怠惰な数量詞です。怠惰な数量詞は、常に最初に正規表現内の次のコンポーネントへの一致を取り消そうとし、次のコンポーネントが一致しない場合にのみテキストを消費します。

ただし、次のコンポーネントは.*であり.*、入力が終了するまですべてに一致します。

代わりにこれを使用してください:

if ($_line_ =~ m/document\.all\.(\w+)/)

また、すべてのテキストが一致している必要はないことにも注意してください。正規表現は、一致する必要があるものと一致する必要があるだけで、他には何も一致しません。

于 2013-01-14T12:55:36.890 に答える
0

代わりに、次のことを試してください。個人的には、はるかに明確だと思います。

document\.all\.([^ ]*)
于 2013-01-14T12:51:13.650 に答える