我想提取不同范围内的所有数字。
第一个范围:$ $
第二个范围:# #
提取第一范围内的所有数字
$1-2$
预期结果
1, 2
$1#4#-2$
预期结果
1, 2
提取第二范围内的所有数字
$1-2#4-9-6#3-4$
预期结果
4, 9, 6
注意-
用于分隔每个数字,每个范围中的数字数量可能会随的不同而不同
我当前的Regex:(^[$])([d]+)(|-d+)*(|#[d]+((|-d+)*)#)([$]+)($)
感谢您的帮助!
对于scope-1匹配,您可以使用以下正则表达式:
(?:$|(?!^)G(?:#[^#]*#)?-)Kd+(?=[-d#]*$)
# without K for Java
(?:$|(?!^)G(?:#[^#]*#)?-)(d+)(?=[-d#]*$)
RegEx Demo 1
对于范围2匹配,您可以使用以下正则表达式:
(?:#|(?!^)G(?:$[^$]*$)?-)Kd+(?=[d$-]*#)
# without K for Java
(?:#|(?!^)G(?:$[^$]*$)?-)(d+)(?=[-d$]*#)
RegEx Demo 2
RegEx分解:
G
在前一个匹配的末尾或第一个匹配的字符串的开头断言位置。因此(?!^)G
匹配上一个匹配结束时的位置K
:重置匹配信息(?=[d$-]*#
前瞻性地断言在匹配0个或多个数字/$
/-
之后我们存在#
(?=[d#-]*$
前瞻性地断言在匹配0个或多个数字/#
/-
之后我们存在$