正则表达式平价
1139 观看
1回复
我正在尝试制作一个正则表达式,该正则表达式将与其和(即奇偶校验)为偶数的数字匹配。因此802(8 + 0 + 2)是偶数,而902(9 + 0 + 2)是奇数。显然有一种算术定律可以执行此正则表达式,而无需计算或破坏任何正则表达式的规则。我为偶数制作了一个正则表达式,但没有偶数校验。
编辑:允许接受前导零,并且数字可以是任何长度(显然小于int在大多数语言中可以达到的最大大小)
谢谢!
作者: Janice Maker 的来源 发布者: 2019 年 10 月 29 日回应 (1)
0像
决定
这是一个非常棘手的问题(我是regex的新手),但我刚刚了解到可以在某些regex风格中使用递归。
这是我想出的:
String regex = "(([02468]*[13579]){2}(?R))|[02468]*$";
想法是使用巧妙的简化方式,即奇数的奇偶校验仅在奇数个数为偶数时才是偶数,因为偶数个奇数位的总和总是偶数,而任何偶数个数的总和总是偶数。 。说明:
([02468]*[13579]){2} → 2 odd digits separated by any number of even digits
(?R) → Repeat the whole regex on the string after match
| → OR
[02468]*$ → the rest of String is 0 or more even digits
EDIT
递归仅使表示法更简单,但不进行递归仍可能(某些语言(如Java)未实现递归),其思想是相同的:
String regex = "(([02468]*[13579]){2})*[02468]*$"
作者: Maljam
发布者: 13.04.2016 05:32
来自类别的问题 :
- regex Learning Regular Expressions
- regex 我的正则表达式匹配太多。我如何使其停止?
- regex 如何在保留原始字符串的同时对字符串执行Perl替换?
- regex 用Java替换正则表达式匹配的第n个实例
- regex 如何用链接替换普通URL?
- regex 带有标志的Python re.sub不会替换所有出现的内容
- regex 如何在JavaScript中验证电子邮件地址
- regex 如何在Java中转义正则表达式的文本
- regex 正则表达式将匹配Java方法声明
- regex 在Python中用空格分割字符串 - 保留引用的子字符串
- parity 如何计算纵向冗余校验(LRC)?
- parity 如何计算以下位序列的奇偶校验位?
- parity 使用Pyserial时的字符转换错误
- parity 正则表达式平价
- parity how to perform xor operation correctly?
- parity matlab和FPGA板中的奇偶校验
- parity 奇偶校验是否包括RS-232上的开始和停止位?
- parity 查找数字奇偶校验的意外值
- parity 并行计算奇偶校验
- parity 在java中的奇偶标志