У меня есть выражение, как:признать символ новой строки с регулярным выражением в Tcl
ENTITY first
VHDL language standard: 3 (VHDL-2008)
ARCHITECTURE BODY arch
VHDL language standard: 3 (VHDL-2008)
Теперь я хочу регулярное выражение только для первого paranthesis после ЛИЦА поэтому результат должен быть VHDL-2008
или даже 2008
.
Я новичок в регулярных выражениях. То, что я пробовал:
"^ENTITY *(.*)"
только возвращает «первым». Поэтому мой вопрос: как я могу запросить новую строку после «первой»? Моя попытка:
"^ENTITY .*\\n(.*)"
И очень запутанным был результатом
"^(.*)"
который добавил некоторые {и}. Зачем?
Я нашел очень некрасивый способ сделать это:
первой ликвидации Newlines
set data [regsub -all "\n" $data ""]
и затем что-то вроде этого:
{ENTITY risc .*VHDL language standard: [0-3]..VHDL-(.*).}
Как вы можете видеть, что я не сделал понять, как распознать {или (paranthesis. Лучшее решение?)
И если все это _isn't_ в одной строке, вы обнаружите, что RE действительно соответствует этому очень тяжело. –
спасибо. Я возьму regexp '{^ ENTITY [^ (] + \ (VHDL - ([^)] +)} $ str -> vhdl', чтобы получить только число. – Sadik
Это не сработает, потому что открытые круглые скобки перед VHDL не экранируются. Если вам нужен только номер, используйте 'regexp {^ ENTITY [^ (] + \ (VHDL - (\ d +)} $ str -> vhdlnum' –