RegEX — не сопоставлять строки, начинающиеся с определенного символа

У меня есть такой файл:

-- START 
.
.
Err_EstensioneDatiClientiFornitori:
    Set ClsExtClifor = Nothing
    Set CallInterface = Nothing
    Call MsgError("EstensioneDatiClientiFornitori")
End Sub

 declare Cg44_clifor  decimal(8,0)
 declare Cg44_clifor  decimal(6,0)
' declare Cg44_clifor  decimal(6,0)
PC_CalcolaSaldoAllaData
PC_CalcolaSaldoMensileParziale
.
.
--END 

Мне нужно сопоставить только строки, содержащие decimal(6,0), но не начинающиеся с символа '.

Я пробовал это регулярное выражение:

.*?decimal\(6,0\)

и я получаю две спички. Первый:

 declare Cg44_clifor  decimal(6,0)

Второй:

' declare Cg44_clifor  decimal(6,0)

Как исключить второе? Мне не нужны строки, начинающиеся с '.


person epi82    schedule 12.09.2012    source источник


Ответы (1)


Достаточно просто попробовать это:

^[^'].*?decimal\(6,0\)

или еще лучший вариант:

^(\s*[^']\s*)\w.*?decimal\(6,0\)

Пропустит все пробелы перед проверкой одинарной кавычки.

РЕДАКТИРОВАТЬ:

Если библиотека соответствует нескольким строкам, это должно работать:

^\s*[^'\n]\s*.*?decimal\(6,0\)
person Ivan Koblik    schedule 12.09.2012
comment
Здравствуйте, с файлом примера, размещенным выше, и вашим регулярным выражением я не получаю результатов... с двумя моими... что не так? - person epi82; 12.09.2012
comment
Я проверил это в Notepad ++, какой инструмент вы используете? - person Ivan Koblik; 12.09.2012
comment
Экспрессо... Не знаю, знаешь ли ты это. - person epi82; 12.09.2012
comment
Может он не понимает^ чем тебе не повезло. Вы можете протестировать регулярные выражения на http://tinyurl.com/9mtbxnr, обязательно проверьте ^$ match at line breaks. - person Ivan Koblik; 12.09.2012
comment
Вы знаете, как я могу сделать это ^$ match at line breaks в VB6? Это не работает... - person epi82; 12.09.2012
comment
Это странный инструмент, похоже, это выражение работает ^\s*[^'\n]\s*.*?decimal\(6,0\) - person Ivan Koblik; 12.09.2012
comment
Пожалуйста, прочитайте это введение в регулярные выражения в VB6, вы найдете там, как получить несколько совпадений. Извините, я не могу проверить это сам, так как у меня не установлен VB6. - person Ivan Koblik; 12.09.2012
comment
Это странный инструмент, это выражение, кажется, работает ^\s*[^'\n]\s*.*?decimal(6,0)... где работает? Если вы имеете в виду Expresso, он не работает. - person epi82; 12.09.2012
comment
@epi82 epi82 Да, я имел в виду Expresso, я протестировал на нем новое выражение. Это сработало. - person Ivan Koblik; 12.09.2012