繁体   English   中英

正则表达式如何使用“或”进行字符串匹配

[英]Regex how to use 'or' for string matching

我想解析网页并在python上使用正则表达式查找特定的模式。

我的示例页面有:

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

我想找到单选和复选框输入的所有matcihng 名称值。

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

但是我不知道如何将这些与正则表达式结合到一个?

编辑:该问题可能会切换到其他方向。 但是最好告诉我我想做什么,而我选择的正则表达式真的适合于此...

我必须查询订户,并获得有关订户的一些基本信息以及订户的可用贷款和费用列表。 相关模块有许多脚本可以通过regex进行此类工作。 我还在代码中的某些部分使用了SGMLparser。 但是我有时会看到SGML解析器无法解析HTML(没有挖掘它为什么失败但基本原因是意外的char类型错误)。 因此,我必须确保我可以处理所有类型的HTML代码,或者通过正则表达式继续这样做。

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

<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="(.*?)".*?>

虽然这行得通...但不是很可靠...

您永远不要使用Regex处理HTML ...这里有很多线程向您展示原因。 也许你可以看看这个以前的SO线程在Python的各种HTML解析器进行了讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM