![](/img/trans.png)
[英]C# regex matching on one or many digit(s) followed by a star but not when the full string is 05* and 07*
[英]Regex to get one character not followed with digit
如果里面没有 int ,我怎么能得到第一个字符:
我需要查看所有地方都有'['
没有整数。
例如:
[abc] pass
[cxvjk234] pass
[123] fail
现在,我有这个:
((([[])([^0-9])))
它获得前 2 个字符,而我只需要一个。
一般来说,要匹配一些后面没有数字的模式,你需要在表达式中添加一个(?!\\d)
/ (?![0-9])
负前瞻:
\[(?!\d)
\[(?![0-9])
^^^^^^^^^
请参阅正则表达式演示。 这匹配任何没有紧跟数字的[
符号。
您当前的正则表达式模式因捕获组而过载,如果我们删除那些冗余的,它看起来像(\\[)([^0-9])
- 它匹配一个[
,然后匹配一个非 ASCII 数字的字符。
您可以使用
(?<=\[)\D
或(如果您只想将 ASCII 数字与模式匹配)
(?<=\[)[^0-9]
查看正则表达式演示
详情:
(?<=\\[)
- 一个正面的后视需要一个[
(但不消耗[
字符,即不将它作为匹配值的一部分返回)之前...\\D
/ [^0-9]
- 非数字。 注意:要仅否定 ASCII 数字,您可以将\\D
与RegexOptions.ECMAScript
标志一起使用。一种可能的解决方案是:
\[\D[^]]*\]
# look for [
# \D - not a digit
# anything not ], zero or more times
# followed by ]
不要用那么多括号。 括号既分组又确定作为匹配项返回的内容。
\[([^0-9])
如果您绝对需要使用括号,请使用(?:…)
作为该组的括号,但不会作为匹配的一部分返回。
(?:(?:(?:\[)([^0-9])))
也许你正在寻找的是\\[([^0-9])
你希望[123abc]
通过吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.