Мне нужно сопоставить несколько шаблонов в одной строке. Например, в этом файле:Необходимо сопоставить несколько шаблонов в одной строке - Perl
Hello, Chester [McAllister;Scientist] lives in Boston [Massachusetts;USA;Fenway Park] # McAllister works in USA
I'm now working in New-York [NYC;USA] # I work in USA
...
Во-первых, я хочу, чтобы соответствовать каждой строки в скобках, зная, что это возможно, чтобы иметь более 1 выкройке, а также, что мы можем иметь 1 к п строк в скобки всегда разделяются точкой с запятой.
Наконец, для каждой строки мне нужно сравнить значения со строкой, расположенной после #
. Например, в первом предложении, я хочу, чтобы сравнить:
[McAllister;Scientist] & [Massachusetts;USA;Fenway Park] TO "McAllister works in USA"
Вы имеете в виду это '\ [[^; \ n] * (?:; [^; \ N] *) + \]' http://regex101.com/r/uT5cC0/2 ' –
Что вы пытаясь сделать это, получить их в массив? – sln
@AvinashRaj Я пробовал это 'if ($ sentence = ~/(\ [[;;] * (?:; [^;] *) + \])/G) {\t print $ 1."\ П"; } ', но для первой строки результат:« [McAllister, Scientist] живет в Бостоне [Массачусетс, США, Fenway Park] ' –