Regex 处理草图中的正则表达式帮助?

Regex 处理草图中的正则表达式帮助?,regex,processing,Regex,Processing,我是一名初级程序员,试图在处理草图中解析HTML文件。(顺便说一句,如果您不知道如何处理,它将编译为Java并使用相同的正则表达式函数)。我已经使用SimpleML将HTML文件正确地捕获为单个字符串。我试图捕获的数据来自一个表,如下所示: <th>Name</th> <th>John F. Kennedy</th> <th>Lyndon Johnson</th> <th>Richard

我是一名初级程序员,试图在处理草图中解析HTML文件。(顺便说一句,如果您不知道如何处理,它将编译为Java并使用相同的正则表达式函数)。我已经使用SimpleML将HTML文件正确地捕获为单个字符串。我试图捕获的数据来自一个表,如下所示:

<th>Name</th>
    <th>John F. Kennedy</th>
    <th>Lyndon Johnson</th>
    <th>Richard Nixon</th>
名称
肯尼迪
林登·约翰逊
理查德·尼克松
等等

我想把候选名字解析成一个数组(去掉“名字”)

所以我先试了一下

    candidates = match(rawString,"<th>.*</th>");
candidates=match(原始字符串,“.”);
它返回了整个列表

然后我试着

    candidates = match(rawString,"<th>.{1,50}</th>");
candidates=match(rawString,“.{1,50}”);
只返回

<th>Name</th>
名称
处理文件说明:

如果regexp中有组(由括号集指定),则每个组的内容将在数组中返回。regexp匹配的元素[0]返回整个匹配字符串,匹配组从元素[1]开始(第一个组是[1],第二个组是[2],依此类推)

所以现在我一直在尝试各种组和量词的组合,比如:

    candidates = match(rawString,"(<th>.{1,50}</th>)*");
candidates=match(rawString,(.{1,50})*);

但一定有一些概念性的东西我没有得到,因为什么都不起作用。看起来这应该很容易,对吧?

用正则表达式解析HTML通常不是一个好主意,但在这里您可能会接受它

您的问题似乎是,
*
匹配贪婪,即。E尽可能多的字符,从而匹配字符串中从第一个
到最后一个
的所有内容

让它懒惰,我。E告诉量词尽可能少地匹配是一种解决方案:

<th>.*?</th>
*?
可能会有用

更稳定一点,速度最低:准确地告诉引擎允许匹配的内容,例如:

<th>[^<>]*</th>
[^]*
[^]
表示“除尖括号外的任何字符”


如果您试图将嵌套结构与正则表达式匹配,就会遇到问题。它可以用现代的正则表达式来做,但很难做对。将HTML注释和字符串添加到混合中(可能包含您正在匹配的分隔符),您将受到极大的伤害。

如果希望多次匹配表达式,您可能需要使用
matchAll
方法
match
只希望模式匹配一次,因此只返回第一个找到的结果


支持反正则表达式和html拥挤这似乎是James遇到的更突出的问题。好吧,我从社区中得到了一种感觉,正则表达式+html=麻烦。那么,有什么更好的方法呢?