我使用以下正则表达式来查找数字对; [0-9][0-9]
如果字符串是偶数长度,我会得到我想要的。
string x ="1234";
Regex.Matches(enc, @"[0-9][0-9]")
使用正则表达式,我得到12
,34
。
如果我string x="12345"
我得到12
,34
。如果我需要23
,45
,如何修改此项?
答案 0 :(得分:1)
就这样做:
([0-9]{2})+$
这将匹配所有对,除非你有一个奇数位数,在这种情况下你将匹配除第一个数字以外的所有数字。如果您需要单独的对,则可以将返回的匹配拆分为顺序对。
答案 1 :(得分:1)
此答案使用您在问题下方的评论中输入的输入(有关输入,请参阅结果部分)
由于我不确定输出应该是什么,我将向您介绍以下3种方法。
此方法始终确保从字符串末尾匹配对。
\d{2}(?=(?:(?:\d{2})+|)(?:\D|$))
此方法始终确保仅在特定标记跟随数字
时才从字符串末尾匹配对\d{2}(?=(?:\d{2})+\[|\[)
此方法始终确保只有当特定标记跟随数字并且通常(但也成对)匹配剩余数字时,才会从字符串末尾匹配对。
\d{2}(?=(?:\d{2})+\[|\[)|\d{2}(?=\d*$)
12345[FNC1]00112233
12345[FNC1]0011223
方法1
23 45 00 11 22 33
23 45 01 12 23
方法2
23 45
23 45
方法3
23 45 00 11 22 33
23 45 00 11 22
\d{2}
匹配任意数字两次(?=(?:\d{2})+\b|\b)
确定以下任何一项匹配的积极前瞻
(?:\d{2})+\b
符合以下条件
(?:\d{2})+
匹配以下一次或多次
\d{2}
匹配任意数字两次\b
将该位置置为单词边界\b
将该位置置为单词边界与方法1 的解释相同,但不使用\b
,而是使用\[
断言以下字符与[
匹配字面上。
与方法2 的解释相同,但最后添加|\d{2}(?=\d*$)
。
|
的作用类似于布尔值OR(匹配方法2 或以下内容)\d{2}
匹配任意数字两次(?=\d*$)
确定后续匹配的正向前瞻
\d*
任意次数匹配$
断言行尾的位置