我正在尝试捕获这样的字符串:
document.all._NameOfTag_ != null ;
如何捕获子字符串:
document.all._NameOfTag_
和标签名称:
_NameOfTag_
到目前为止我的尝试:
if($_line_ =~ m/document\.all\.(.*?).*/)
{
}
但它总是贪婪并捕获_NameOfTag_ != null
我正在尝试捕获这样的字符串:
document.all._NameOfTag_ != null ;
如何捕获子字符串:
document.all._NameOfTag_
和标签名称:
_NameOfTag_
到目前为止我的尝试:
if($_line_ =~ m/document\.all\.(.*?).*/)
{
}
但它总是贪婪并捕获_NameOfTag_ != null
懒惰的(.*?)
人总是什么都不匹配,因为后面的贪婪.*
总是匹配一切。
你需要更加详细:
if($_line_ =~ m/document\.all\.(\w+)/)
之后将只匹配字母数字字符 document.all.
你的问题是惰性量词。惰性量词将始终首先尝试取消匹配正则表达式中的下一个组件,并且仅当所述下一个组件不匹配时才会使用文本。
但是在这里,您的下一个组件是.*
, 并.*
匹配所有内容,直到您的输入结束。
改用这个:
if ($_line_ =~ m/document\.all\.(\w+)/)
另请注意,不需要匹配所有文本。正则表达式只需要匹配它必须匹配的内容,其他什么都不需要。
请尝试以下方法,个人我觉得它更清楚:
document\.all\.([^ ]*)