我有这个正则表达式来确定该行是否包含两个下划线:
\s*_{2}(\w+)
任何空格,两个下划线,然后是一个单词。事实证明,我也需要知道根本没有下划线,所以我有:
\s*(\w+)
可选空格后跟一个单词。然后我得到第 1 组,这是我的话。到现在为止还挺好。
问题是使用两个下划线时采取的操作,几乎与不使用下划线时的代码相同(除了我提出一个标志)
if( s =~ uderscore ) {
takeGroup( 1 )
yada yada
flag = true
} else if( s =~ noUnderscore {
takeGroup( 1 )
yada yada
flag = false
}
我认为必须有更好的方法,而不是复制整个正则表达式并进行测试。