我有一个由4个子串组成的多个块组成的字符串,由|
字符分隔。例如:
| 255 |的UpdatePanel | updatePanel1 | somecontent1234 |
很可能会有多个连续的4个字符串块
| 255 |的UpdatePanel | updatePanel1 | somecontent1234 | 256 |的UpdatePanel | updatePanel2 | someOtherContent |
现在我需要一个匹配每个块的正则表达式
\|([1-9]+)\|(UpdatePanel)\|(updatePanel1|updatePanel2)\|(.*)\|
问题是,这似乎与上面的整个示例字符串匹配,而不是4个子串的2个匹配
我是否必须以某种方式从。*中排除分隔符(|)或其他内容?
答案 0 :(得分:1)
您可以替换与否定字符类匹配的贪婪点:
\|([1-9]+)\|(UpdatePanel)\|(updatePanel1|updatePanel2)\|([^|]*)
请参阅regex demo
[^|]*
模式将匹配除|
以外的零个或多个字符。因此,甚至不需要在最后使用\|
。
请注意,您可以将(updatePanel1|updatePanel2)
部分缩小为(updatePanel[12])
,甚至(updatePanel\d+)
。