帮助使用正则表达式查找数字
我试图找到所有单个数字(使用 vim):
- 行开头的数字
- 行
- 尾的数字 数字后面必须跟有非数字,
- 但不能跟在“点”后面或继续" 和一个数字或一个 "," 和一个数字。
这是正确的
7
字7
7字
7.
.7
一个,7
字7字
字 7 字
7-7
但不是这个
7.7
7,7
77
谁能帮我解释一下正则表达式?
编辑:
也许我在下面有关原子分组的答案的帮助下找到了它。 Vim 确实支持它: <代码>\(\d\.\|\d\,\|\d\)\@
I'm trying to find all single numbers (with the use of vim):
- numbers at start of line
- numbers at end of line
- the number has to be followed and proceded by a non number
- but may not be folowed or proceded with a "dot" and a number or a "," and a number.
this is correct
7
word7
7word
7.
.7
a,7
word7word
word 7 word
7-7
but not this
7.7
7,7
77
Can anyone help me and explain the regex?
EDIT:
may'be I've found it with the help of an answer below about atomic grouping. Vim does support it:\(\d\.\|\d\,\|\d\)\@<!\d\(\.\d\|\,\d\|\d\)\@!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你可以试试这个:
解释:
\v
变得非常神奇:不需要很多反斜杠%
符号是可选的(使括号中的组不匹配)( \d+(\.|,)@ :前面不带数字 然后 或 ,
\d@ :前面不带数字(确保我们在第一个数字
@>
确保,请参阅:help /\@>
)((\.|,) \d)@!
:之后没有点或逗号后跟数字。You can try this:
Explanation:
\v
turns very magic : no need of many backslashes%
signs are optional (make groups in parentheses non-matching)(\d+(\.|,)@<!
: not preceded with digits then . or ,\d@<!
: not preceded with a digit (be sure we are at the first digit@>
ensures that, see:help /\@>
)((\.|,)\d)@!
: after that, no dot or comma followed by a digit.尝试一下:
^(?!\d(\.|\,)?\d)(((\D*?)\d(\D*?))|(\d(\D* ?)\d))$
如果您需要解释,请告诉我。
Give this a whirl:
^(?!\d(\.|\,)?\d)(((\D*?)\d(\D*?))|(\d(\D*?)\d))$
And let me know if you'd like an explanation.
试试这个:
说明:
这个是直接来自我的 vim,所以它应该可以在你的 vim 中工作。
Try this one:
Explanation:
This one is straight from my vim so it should work in yours.