Как сопоставить подстроку или целую строку - PullRequest
0 голосов
/ 08 мая 2020

В Python регулярном выражении, как мне сопоставить только подстроки facebook.com...777, заданные любой строкой? Я не хочу, чтобы ?sfnsn=mo в конце.
У меня (?<=https://m\.)([^\s]+) соответствовало всему после https://m.. У меня также есть (?=\?sfnsn), чтобы сопоставить все, что перед ?sfnsn.

Как мне объединить регулярное выражение, чтобы вернуть только часть facebook.com ... 777 для любой строки.

иметь: https://m.facebook.com/story.php?story_fbid=123456789&id=7777777777?sfnsn=mo
хочу: facebook.com/story.php?story_fbid=123456789&id=7777777777

иметь: https://m.facebook.com/story.php?story_fbid=123456789&id=7777777777
хочу: facebook.com/story.php?story_fbid=123456789&id=7777777777

Вот с чем я возился с https://regex101.com/r/WYz5dn/2

(?<=https://m\.)([^\s]+)(?=\?sfnsn)

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

Вы можете использовать группу захвата вместо положительного просмотра назад и сопоставить либо ?sfnsn, либо конец строки.

https://m\.(\S*?)(?:\?sfnsn|$)

Regex demo

Используя поисковые пути, шаблон может быть:

(?<=https://m\.)\S*?(?=\?sfnsn|$)

Regex demo

0 голосов
/ 08 мая 2020

Добавление ? в конце работает, поскольку последний сгруппированный просмотр вперед может существовать, а может и не существовать, мы ставим после него знак вопроса:

(?<=https://m\.)([^\s]+)(?=\?sfnsn)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...