正则表达式排除特定字符不起作用

标签 regex regex-negation

我搜索了一下,发现 [^?] 不会包含某个字符,例如本例中的问号,但它似乎包含一个空格,而不是我想要的。这种模式:

\((.*?)\)[^?]

匹配括号中的任何内容,除非最后一个括号后紧跟一个问号。

(need to capture including brackets) ignore this
(ignore this completely)?

这个模式正确地捕获了括号中的第一行而不包括空格,但也捕获了我想忽略的下面的行:

\((.*?)\)

我可以使用什么模式只捕获没有尾随空格的顶行而忽略下面的行?

您可以看到这些模式都无法正常工作:

https://regex101.com/r/fHXJ8x/1

https://regex101.com/r/fHXJ8x/2

最佳答案

试试这个正则表达式...

它可以工作,忽略括号内的任何文本,它也在问号旁边

也忽略不需要的空格

\((.*?)\)(?!\?)

输出:

enter image description here

关于正则表达式排除特定字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68948372/

相关文章:

regex - 在 Google Analytics 中使用正则表达式作为页面名称

java - 基本实现的正则表达式模式匹配行为

正则表达式包含一件事但排除另一件事

Java/RegEx - 模式否定不起作用

c# - 正则表达式使用 {、}、$ 和 @ 忽略带有特殊字符的空格

包含一个字符串但不包含另一个字符串的字符串的正则表达式

ruby - 使用分组时如何使用 gsub 在 Ruby 正则表达式 (regex) 中反向引用?

正则表达式:将 '@@' 替换为 '@',将 '@' 替换为一些字符串

java - 如何对从java文件中读取的模式使用转义字符

java - 正则表达式在java中查找以 'JD'固定字长开头的单词