RegEx匹配表格单元格

时间:2014-05-31 23:52:03

标签: regex

再次提出RegEx问题

我正在使用PCRE语法,我试图在简化表中找到匹配单元格的解决方案(如在trac中)

让我们说:

||cell||cell||cell||
||cell||cell||cell
||cell||||cell||
    ||other table cell||

好的,我需要从上面制作两个表,(第二行未命中结束,第三行在第二个单元格中有一个colspan = 2)

这个想法很简单我必须抓住每一次出现的||细胞 我很想知道甚至出现过|和所有文本到下一次出现的double |或新线,我也需要避免!在管道之前,知道距离线的起点。

我花了一整天的时间来尝试这样做......也许我愚蠢......或者.NET可能会有一些verid实现RegEx。

2 个答案:

答案 0 :(得分:1)

这会抓住每个细胞的内容,这就是你在谈论的内容吗?

(?<=\|\|)[^|\r\n]*

请参阅demo

<强>解释

  (?<=                     # look behind to see if there is:
    \|                     #   '|'
    \|                     #   '|'
  )                        # end of look-behind
  [^|\r\n]*                # any character except: '|', '\r' (carriage
                           # return), '\n' (newline) (0 or more times
                           # (matching the most amount possible))

答案 1 :(得分:0)

经过几个小时的打架和扔东西后我终于明白了!看哪:

/(?<tr>\n\s*|\A\s*)?(?<td>(!?\|\|)+)(?<th>=)?(?<content>(?<left>[ ]*).*?(?<right>[ ]*))(?<fold>\|\|\s?\\)?(?=(!?\|\|)|(?<eol>\n|\Z))/gm

Regular expression visualization

Test on regex101