В Python у меня есть строка имен, разделенных запятыми, и я пытаюсь добавить двойные квадратные скобки вокруг имен.
Вот формат исходной строки.
1. John Smith1, John Smith2, John Smith3, etc.<br>
В итоге я хочу получить следующее:
1. [[John Smith1]], [[John Smith2]], [[John Smith3]], [[etc.]]<br>
Я пытался использовать это регулярное выражение:
(.+?)(?:, |(<br>)$)
с этой заменой:
[[\1]], \2
Но он дает такой результат:
[[1. John Smith1]], [[John Smith2]], [[John Smith3]], [[etc.,]]<br>
- Как переместить начальные "\ d. \ S" за пределы захвата имени?
- Как предотвратить использование последней запятой после фамилии (в данном случае и т. Д., А не и т. Д.)?
Любой совет будет принят с благодарностью.
ОБНОВЛЕНИЕ
Приношу свои извинения за то, что не конкретизировал.Когда я заявил, что хочу сопоставить это, я должен был сказать «только» этот шаблон.
Когда я использовал это регулярное выражение: (?<=\.\s|,\s)([^,\r\n]+)\s*(?=<br>|,)
и эту замену [[\1]]
, он сделал две неожиданные вещи.
1. Хотя это работает на regex101.com, когда я смотрю на вывод в Notepad ++, все имена меняются на SOH, а в Notepad они становятся непечатными символами.
2. Это слишком агрессивно, поэтому оно изменилоськаждый экземпляр из нескольких элементов, разделенных запятыми.Таким образом, вывод из этого:
1. John Smith1, John Smith2, John Smith3, John Smith4<br>
This is the reason why John Smith1, John Smith2, John Smith3, and John Smith4 did what they did.<br>
выглядит так в Notepad ++:
1. [[SOH]], [[SOH]], [[SOH]], [[SOH]]<br>
This is the reason why John Smith1, [[SOH]], [[SOH]], and John Smith4 did what they did.<br>
Я дам другим предложениям попробовать посмотреть, есть ли работа.
Еще раз спасибо.
Последнее обновление Я решил проблему, не связанную с печатью.Я забыл экранировать строку подстановки в регулярном выражении с помощью «r».Теперь, если я смогу заставить регулярное выражение остановиться на первом <br>
, я должен получить то, что мне нужно.Продолжаем поиск ...
Еще одна вещь: в строке будет больше пронумерованных строк с разделенными запятыми именами и описаниями с разрывами строк.Так что
1. FirstName1 LastName1, FirstName2 LastName2, FirstName3 LastName3<br>
Description with FirstName1 LastName1, FirstName2 LastName2, FirstName3 LastName3<br>
2. FirstName3 LastName3, FirstName4 LastName4<br>
Description with FirstName3 and FirstName4 LastName4.<br>
3. FirstName3 LastName3, FirstName6 LastName6<br>
Description with FirstName3 and FirstName6.<br>
Все еще требуется изменить только строки, начинающиеся с цифры / периода / пробела и заканчивающиеся переводом строки.
1. [[FirstName1 LastName1]], [[FirstName2 LastName2]], [[FirstName3 LastName3]]<br>
Description with FirstName1 LastName1, FirstName2 LastName2, FirstName3 LastName3<br>
2. [[FirstName3 LastName3]], [[FirstName4 LastName4]]<br>
Description with FirstName3 and FirstName4 LastName4.<br>
3. [[FirstName3 LastName3]], [[FirstName6 LastName6]]<br>
Description with FirstName3 and FirstName6.<br>
Не соответствует слову «Описание».Используется только в качестве примера.