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