正则表达式 - 从。*中排除分隔符。

时间:2016-07-27 12:30:26

标签: regex iis url-rewrite-module

我有一个由4个子串组成的多个块组成的字符串,由|字符分隔。例如:

  

| 255 |的UpdatePanel | updatePanel1 | somecontent1234 |

很可能会有多个连续的4个字符串块

  

| 255 |的UpdatePanel | updatePanel1 | somecontent1234 | 256 |的UpdatePanel | updatePanel2 | someOtherContent |

现在我需要一个匹配每个块的正则表达式

\|([1-9]+)\|(UpdatePanel)\|(updatePanel1|updatePanel2)\|(.*)\|

问题是,这似乎与上面的整个示例字符串匹配,而不是4个子串的2个匹配

我是否必须以某种方式从。*中排除分隔符(|)或其他内容?

1 个答案:

答案 0 :(得分:1)

您可以替换与否定字符类匹配的贪婪点:

\|([1-9]+)\|(UpdatePanel)\|(updatePanel1|updatePanel2)\|([^|]*)

请参阅regex demo

[^|]*模式将匹配除|以外的零个或多个字符。因此,甚至不需要在最后使用\|

请注意,您可以将(updatePanel1|updatePanel2)部分缩小为(updatePanel[12]),甚至(updatePanel\d+)