Ruby 正则表达式仅匹配逗号分隔字符串中的单个数字
Ruby regex to match only single digits in a comma-delimited string
我输入的字符串如下:
"1,7"
"1,2,3, 8,10"
"1, 4,5,7"
我正在尝试编写一个正则表达式来匹配具有以下约束的上述字符串:
- 它应该只匹配单个数字并且也在 1-7 范围内
- 数字后的逗号是可选的,例如可以有一个字符串“4”,其中应该匹配 4
- 数字可以用空格作为前缀,但应该忽略它
我试过以下方法:
([1-7]),?
但是它匹配连续的数字,如“55”,在后面的输入字符串中,在同一字符串中它也匹配“10”中的“1”,这是不正确的。
"5,6,7, 55, 8, 10,3"
考虑到上面的输入字符串,所需的正则表达式应匹配 5、6、7 和 3。
注:我用的是Ruby2.2.1
谢谢。
您可以试试下面的正则表达式:
(?<=^|,|\b)[1-7](?=$|,|\b)
这意味着一个数字 [1-7]
必须紧跟在字符串或逗号的开头或单词边界 (?<=^|,|\b)
之后。并且必须紧接在字符串结尾或逗号或单词边界 (?=$|,|\b)
.
之前
我输入的字符串如下:
"1,7"
"1,2,3, 8,10"
"1, 4,5,7"
我正在尝试编写一个正则表达式来匹配具有以下约束的上述字符串:
- 它应该只匹配单个数字并且也在 1-7 范围内
- 数字后的逗号是可选的,例如可以有一个字符串“4”,其中应该匹配 4
- 数字可以用空格作为前缀,但应该忽略它
我试过以下方法:
([1-7]),?
但是它匹配连续的数字,如“55”,在后面的输入字符串中,在同一字符串中它也匹配“10”中的“1”,这是不正确的。
"5,6,7, 55, 8, 10,3"
考虑到上面的输入字符串,所需的正则表达式应匹配 5、6、7 和 3。
注:我用的是Ruby2.2.1
谢谢。
您可以试试下面的正则表达式:
(?<=^|,|\b)[1-7](?=$|,|\b)
这意味着一个数字 [1-7]
必须紧跟在字符串或逗号的开头或单词边界 (?<=^|,|\b)
之后。并且必须紧接在字符串结尾或逗号或单词边界 (?=$|,|\b)
.