使用正则表达式匹配一组具有可变定位的数字?
Use Regex to match a set of numbers with variable positioning?
我正在尝试使用 RegEx 来匹配用户输入的一组数字。我希望用户提供 4 位数字的位置和值。这个想法是获取此信息,搜索列表和 return 10 位数字的 'matching numerical string' 当且仅当用户提供的数字位于正确的位置时。任何人都可以提供我可以使用的正则表达式吗?我束手无策,努力不被解雇。
快速更新示例:用户输入##2#5#8##9
应该匹配
1528578009
8324598769
不应该匹配
4726754839
5023859800
希望这有助于了解我正在尝试做什么。感谢回复
假设你的数据看起来像
0123456789
0103050709
0020406080
0123000000
你可以使用像^0123......$
这样的正则表达式来匹配任何以“0123”作为前四位数字的字符串,匹配第一行和最后一行。同样,^.1.3.5.7..$
将匹配在位置 2、4、6 和 8 中包含 1、3、5 和 7 的任何字符串,匹配前两行。
给定用户输入的整数对 d 和 p 表示数字和位置,您可以轻松生成这样的正则表达式字符串。一种简单的方法是从字符串 "^..........$"
开始并将索引 p 处的每个字符替换为字符 d(如果索引是从一开始的。如果索引是从零开始的,则向 p 添加一)。确保 d 只是一个数字,并且 p 在适当的范围内。
如果您想更严格地使用正则表达式,请使用 \d
而不是 .
来匹配数字而不是任何字符。
据我了解您的意见是:
p1 v1
p2 v2
p3 v3
p4 v4
其中p是位置,v是数字的值。
如果是这种情况,请按位置的递增顺序排列它们,所以我假设 p1 < p2 < p3 < p4.
现在计算以下值:
a1 = p1 - 1
a2 = p2 - p1 - 1
a3 = p3 - p2 - 1
a4 = p4 - p3 - 1
a5 = 10 - p4
现在使用以下正则表达式
[1-9]{a1}v1[0-9]{a2}v2[0-9]{a3}v3[0-9]{a4}v4[0-9]{a5}
该方法是基于position以1为基础的。即最高位的位置被认为是 1 而不是 0。
我正在尝试使用 RegEx 来匹配用户输入的一组数字。我希望用户提供 4 位数字的位置和值。这个想法是获取此信息,搜索列表和 return 10 位数字的 'matching numerical string' 当且仅当用户提供的数字位于正确的位置时。任何人都可以提供我可以使用的正则表达式吗?我束手无策,努力不被解雇。
快速更新示例:用户输入##2#5#8##9
应该匹配
1528578009 8324598769
不应该匹配
4726754839 5023859800
希望这有助于了解我正在尝试做什么。感谢回复
假设你的数据看起来像
0123456789
0103050709
0020406080
0123000000
你可以使用像^0123......$
这样的正则表达式来匹配任何以“0123”作为前四位数字的字符串,匹配第一行和最后一行。同样,^.1.3.5.7..$
将匹配在位置 2、4、6 和 8 中包含 1、3、5 和 7 的任何字符串,匹配前两行。
给定用户输入的整数对 d 和 p 表示数字和位置,您可以轻松生成这样的正则表达式字符串。一种简单的方法是从字符串 "^..........$"
开始并将索引 p 处的每个字符替换为字符 d(如果索引是从一开始的。如果索引是从零开始的,则向 p 添加一)。确保 d 只是一个数字,并且 p 在适当的范围内。
如果您想更严格地使用正则表达式,请使用 \d
而不是 .
来匹配数字而不是任何字符。
据我了解您的意见是:
p1 v1
p2 v2
p3 v3
p4 v4
其中p是位置,v是数字的值。 如果是这种情况,请按位置的递增顺序排列它们,所以我假设 p1 < p2 < p3 < p4.
现在计算以下值:
a1 = p1 - 1
a2 = p2 - p1 - 1
a3 = p3 - p2 - 1
a4 = p4 - p3 - 1
a5 = 10 - p4
现在使用以下正则表达式
[1-9]{a1}v1[0-9]{a2}v2[0-9]{a3}v3[0-9]{a4}v4[0-9]{a5}
该方法是基于position以1为基础的。即最高位的位置被认为是 1 而不是 0。