Regex如何使用“or”进行字符串匹配

2024-10-01 09:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python上使用regex解析web页面并找到特定的模式。在

我的示例页面有:

<input type="checkbox" name="some name....">
<input type="text", name="somemore name...">
<input type="radio" name="other name...">

我想找到所有的matcihng名称值,这些值是收音机和复选框输入的。在

^{pr2}$

但我不知道如何将这些正则表达式组合成一个单独的?在

编辑:这个问题可能会转到其他方向。但最好告诉我想做什么,我选择的regex用法是否真的适合这一点。。。在

我必须查询订户,并获得有关订户的一些基本信息,以及该订户的可用贷款和收费列表。相关的模块有许多脚本可以使用regex完成这类工作。我在代码的某些部分也使用了SGMLparser。但我有时会看到SGML解析器无法解析HTML(不了解它失败的原因,但基本原因是意外的char类型错误)。所以,我必须确保我既可以处理所有类型的HTML代码,也可以继续使用regex。在

结论:使用HTMLParser是最好的选择,而使用regex是一个非常糟糕的主意。。。这就是我从这个问题中得到的。。。但由于问题本身更多的是关于regex matcihng而不是正则表达式在thml中的使用,我决定接受关于正则表达式的答案。。。在


Tags: 代码nameweb示例类型inputhtmltype
3条回答
<input type="(checkbox|radio)" name="(?P<name>.*?)".*?>

为了便于提取,我还在其中添加了一个捕获组名。在

但是旧的规则适用,不要使用regex来解析html。它很脆弱。如果您正在解析的代码一夜之间变成<input class="aha" type="checkbox" name="some name....">怎么办?使用HTMLParser类或BeautifulSoup。在

http://docs.python.org/library/htmlparser.html

http://www.crummy.com/software/BeautifulSoup/

这个?在

<input type="(?:checkbox|radio)" name="(.*?)".*?>

当这个工作的时候。。。它不是很坚固。。。在

你不应该用正则表达式处理HTML。。。这里有很多线索告诉你原因。也许您可以查看this上一个SO线程,其中讨论了Python的各种HTML解析器。在

相关问题 更多 >