регулярное выражение Python, чтобы найти любую ссылку, которая содержит текст «abc123» - PullRequest
0 голосов
/ 07 августа 2010

Я использую красивый суп, чтобы найти все теги href.

links = myhtml.findAll('a', href=re.compile('????'))

Мне нужно найти все ссылки, которые имеют 'abc123' в тексте href.

Мне нужна помощь срегулярное выражение, видите ???в моем фрагменте кода.

Ответы [ 3 ]

2 голосов
/ 07 августа 2010

Если 'abc123' равно буквально , что вы хотите найти в любом месте href, то re.compile('abc123'), как указано в других ответах, является правильным. Если фактическая строка, которую вы хотите сопоставить, содержит знаки препинания, например, 'abc123.com', затем используйте вместо

re.compile(re.escape('abc123.com'))

Часть re.escape "экранирует" любую пунктуацию, так что она воспринимается буквально, как буквенно-цифровые символы; без этого некоторые знаки препинания интерпретируются движком RE различными способами, например, точка ('.') в приведенном выше примере будет восприниматься как «любой отдельный символ», поэтому re.compile('abc123.com') будет соответствовать, например, 'abc123zcom' (и многие другие строки аналогичной природы).

1 голос
/ 07 августа 2010

Если вы хотите, чтобы все ссылки были точно с 'abc123', вы можете просто написать:

links = myhtml.findAll('a', href=re.compile('abc123'))
1 голос
/ 07 августа 2010

"abc123" должен дать вам то, что вы хотите

, если это не сработает, чем BS, вероятно, использует re.match, и в этом случае вы захотите ".*abc123.*"

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