У меня есть это регулярное выражение, чтобы определить, содержит ли строка два подчеркивания:
\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
}
Я думаю, что должен быть лучший способ, вместо дублирования всего регулярного выражения и тестирования с и без.