如果我有一个字符串如" 1)测试1 22)测试2 333)测试3 4444)测试4 55555)测试5",是否有一个前瞻性正则表达式来拆分并保持{{1 }})?
我尝试了(\d+\)
,非贪婪地用数字而不是(?=(\d+\)))
分割数字。防爆。 2)和22)都是(\d+)
的{{1}}。
substrings
答案 0 :(得分:1)
您需要使用单词边界:
(?=\b\d+\))
请参阅demo
请注意,这里的数字序列应该以非单词字符开头。
要修剪开始,只需限制\b
使用否定前瞻(?!^)
:
(?=(?!^)\b\d+\))
请参阅another demo
由于\b
可能匹配字符串开头的空字符串(在开头和单词字符之间),(?!^)
前瞻确保在该位置没有匹配,以便我们不要得到一个空元素。
答案 1 :(得分:0)
答案 2 :(得分:0)
你使用这个基于前瞻性的正则表达式:
(?!\A)\s+(?=\d+\))
RegEx分手:
(?!\A) # We are at start of input
\s+ # Match 1 or white-space
(?=\d+\)) # lookahead to make sure next position has digits and )