繁体   English   中英

正则表达式得到一个字符后面没有数字

[英]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 数字,您可以将\\DRegexOptions.ECMAScript标志一起使用。

一种可能的解决方案是:

\[\D[^]]*\]
# look for [
# \D - not a digit
# anything not ], zero or more times
# followed by ]

在 regex101.com 上查看演示

不要用那么多括号。 括号既分组确定作为匹配项返回的内容。

\[([^0-9])

如果您绝对需要使用括号,请使用(?:…)作为该组的括号,但不会作为匹配的一部分返回。

(?:(?:(?:\[)([^0-9])))

也许你正在寻找的是\\[([^0-9])你希望[123abc]通过吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM