如何匹配字符串的通配符?
How to match a wildcard for strings?
请为下面的 Firstjson 列表建议一个通配符
Firstjson = { p10_7_8 , p10_7_2 , p10_7_3 p10_7_4}
我已经为下面的 Secondjson 列表尝试了 p10.7.* 通配符,它起作用了。但是当我尝试 p10_7_* 上面的 Firstjson 列表时它不起作用
Secondjson = { p10.7.8 , p10.7.2 , p10.7.3 , p10.7.4 }
您正在尝试使用 通配符 语法,但 Groovy 需要使用 正则表达式 语法进行模式匹配。
您的尝试出了什么问题:
尝试 #1:p10.7.*
.
的正则表达式匹配任何单个字符,.*
匹配0个或多个字符。这意味着:
p10
{exactly one character of any kind here}7
{zero or more characters of any
kind here}
您没有意识到,您第一次尝试时 .
字符也像 single-character 通配符一样工作。例如,这可能与 p10x7abcdefg
匹配。不过,它也 匹配 p10.7.8
。但要小心,它也匹配 p10.78
,因为模式末尾的 .*
表达式将愉快地匹配任何字符序列,因此接受 p10.7
之后的任何和所有字符。
尝试 #2:p10_7_*
_
仅匹配文字下划线。但是_*
表示匹配零个或多个下划线。它 not 意味着匹配 any 种类的字符。所以 p10_7_*
匹配 p10_7_______
这样的东西。直译:
p10_7
{zero or more underscores here}
你可以做什么:
你可能想要一个像 p10_7_\d+
这样的正则表达式
这将匹配 p10_7_3
或 p10_7_422
之类的内容。它通过匹配文字文本 p10_7_
后跟一个或多个 数字 来工作,其中数字是 0
到 9
。 \d
匹配任意数字,+
表示匹配一个或多个前面的东西。直译:
p10_7_
{one or more digits here}
请为下面的 Firstjson 列表建议一个通配符
Firstjson = { p10_7_8 , p10_7_2 , p10_7_3 p10_7_4}
我已经为下面的 Secondjson 列表尝试了 p10.7.* 通配符,它起作用了。但是当我尝试 p10_7_* 上面的 Firstjson 列表时它不起作用
Secondjson = { p10.7.8 , p10.7.2 , p10.7.3 , p10.7.4 }
您正在尝试使用 通配符 语法,但 Groovy 需要使用 正则表达式 语法进行模式匹配。
您的尝试出了什么问题:
尝试 #1:p10.7.*
.
的正则表达式匹配任何单个字符,.*
匹配0个或多个字符。这意味着:
p10
{exactly one character of any kind here}7
{zero or more characters of any kind here}
您没有意识到,您第一次尝试时 .
字符也像 single-character 通配符一样工作。例如,这可能与 p10x7abcdefg
匹配。不过,它也 匹配 p10.7.8
。但要小心,它也匹配 p10.78
,因为模式末尾的 .*
表达式将愉快地匹配任何字符序列,因此接受 p10.7
之后的任何和所有字符。
尝试 #2:p10_7_*
_
仅匹配文字下划线。但是_*
表示匹配零个或多个下划线。它 not 意味着匹配 any 种类的字符。所以 p10_7_*
匹配 p10_7_______
这样的东西。直译:
p10_7
{zero or more underscores here}
你可以做什么:
你可能想要一个像 p10_7_\d+
这将匹配 p10_7_3
或 p10_7_422
之类的内容。它通过匹配文字文本 p10_7_
后跟一个或多个 数字 来工作,其中数字是 0
到 9
。 \d
匹配任意数字,+
表示匹配一个或多个前面的东西。直译:
p10_7_
{one or more digits here}