Does “d” in regex mean a digit?
我发现在123中,\d与1和3相匹配,但与2不匹配。我在想,如果\d匹配一个满足什么要求的数字?我说的是python风格的regex。
gedit中的正则表达式插件正在使用python样式的regex。我创建了一个文本文件,其内容是
只有1和3与regex \d匹配;2不匹配。
一般来说,对于没有其他字符的数字序列,只有奇数是匹配的,而偶数则不是。例如在12345中,匹配项是1、3和5。
- 威尔马克埃多克斯1,1,1,2,1,3如果你的表情中不一定有别的东西的话If it doesn't have to be something else in your expression.你能展示你的全部表情吗?
- 这是一个短暂的手法,因此,这应该是一场比赛。请填写一个完整的测试框(一个脚本,可以运行,说明你的问题),也许我们可以找出错误。
- @Delnan:"我发现在123场比赛中,.1比3,但不是2"声音很美的混凝土对我。
- @Amber:该死的我错过了!
- 谢谢大家!请看我的更新。
- 比赛只有1分123分试着打123。
- 如果你在1号和2号之间放置一个空间,在3号之后立即加上4号,会发生什么事?(我怀疑这是Gedit搜索机制中的错误或延误设计决定。)
- @Zack:For a sequence of digit numbers without other characters in between,only the odd order digits are matches,and the even order digits are not.比赛以12345为例,比赛以13和5为例。
- 好吧,我不把这当作答案,因为我不知道,但我认为,在第一场比赛结束后,人们不愿意马上开始一场新的比赛——它的一个特征,它是什么,在试图再次比赛之前。请试着匹配
[0-9]并不总是等同于\d。在python3中,[0-9]只匹配0123456789个字符,而\d匹配[0-9]和其他数字字符,例如东方阿拉伯数字??????????。
- 在回复中尝试:import re, re.match(r'\d', '??????????')显示不匹配
- @尼克在Python3上试试。
- 对于波斯语和阿拉伯语,在Java和JavaScript引擎中,使用p{Nd}
- 我用js var t=/^\p{Nd}$/;试过,没有结果。
- 那不正确。不是所有的引擎都是这样执行的。onigurum和onigmo(例如在ruby中使用)有d=[0-9],如果需要其他脚本的数字,则必须使用p数字
- +但是,嗯…OP的标签是Python,\d只与python3中的任何Unicode数字匹配。在python2.7中,它仍然是旧的ascii [0-9]——在答案中可能需要澄清这一点。:)
- 这里的php:preg_match()为?????????返回false,所以\d==[0-9]。
- 如果说我们只想匹配英语、阿拉伯语和其他语言中的1个,是否有等价于d的词?
- @farazhmad,可能不是,您必须单独指定所有字符
\d匹配大多数regex语法样式中的任何单个数字,包括python。正则表达式引用
EDCOX1与9的序列匹配Java中的三个数字序列。
- AMAL Murali,如何使用这个表达式来匹配Java中的任何数字序列。
- @哈桑卡蒂布:\\d+。
在python风格的regex中,\d匹配任何单个数字。如果您看到的内容似乎没有做到这一点,请提供您正在使用的完整regex,而不是仅仅描述一个特定的符号。
1 2 3 4 5 6 7
| >>> import re
>>> re.match(r'\d', '3')
<_sre.SRE_Match object at 0x02155B80>
>>> re.match(r'\d', '2')
<_sre.SRE_Match object at 0x02155BB8>
>>> re.match(r'\d', '1')
<_sre.SRE_Match object at 0x02155B80> |
- 谢谢!我的regex解析器是gedit中的正则表达式插件。全部内容为123。
这只是一个猜测,但我认为你的编辑实际上匹配每一个数字-123,但只突出显示奇数匹配,以区别于整个123字符串匹配的情况。
大多数regex控制台使用不同的颜色突出显示连续匹配,但由于插件设置、终端限制或其他原因,在您的情况下,可能只突出显示其他组。