我想知道是否存在" one-regex-solution"对于我当前的问题(在PHP中):
假设有许多文件,其中包含以下类似的代码方案:
<p class="first-names">
Stan, Mary-Ann, William 3rd, Big Jim, Joe, Samantha
</p>
我想单独匹配文件中的所有名字,我想知道这是否可以用一个正则表达式完成?
我到目前为止尝试了以下内容,它提供了完整列表和最后两个第一个名字(Joe
,Samantha
),但不是完整列表:
/(?<=<p class="first-names">)\W*(?:([a-zA-Z0-9\s-]{3,})+(?:, ))*(.*?)(?=[\W\ ]*<\/p>)/s
我知道,这是一个两步法
a)获取<p>
- 标签
b)a)
的分割结果这有效,但我正在寻找像
这样的东西<Start_after_this_to_look_for_pattern> (?:(<Pattern>)<Separator>?){1 to many}<don't_look_after_this_for_pattern>
感谢您的帮助!
答案 0 :(得分:1)
实际上,您可以使用\G
构造:
(?:\G(?!\A)|<p[^>]*>\s*)
(?P<prename>(?:(?!</p>)[^,])+),?\s*
<小时/>
如上所述,尽管如此,最好使用带有xpath
查询的解析器,并将内容拆分为,
。