ruby正则表达式,一切但是括号和括号中的内容

ric*_*ick 1 ruby regex

我正在尝试编写一个正则表达式,用于生成不在括号或括号中的字符串中的内容.括号总是一年,括号可以包含任何普通字符,大写和小写.我通过查找括号和括号然后[^\regex]来逃避它(这是对的吗?)

这是字符串:

s = 'Some words (1999) [THINGS]
Run Code Online (Sandbox Code Playgroud)

和正则表达式:

/[^(\(\d{4}\))|\[.*\]]/
Run Code Online (Sandbox Code Playgroud)

但这包括括号内的字符见(http://rubular.com/r/bbpcnnGgCI)

一切正常,直到添加[^\regex]

例如,这可以得到(1999):

>> puts s.match(/\(\d{4}\)/)
(1999)  
Run Code Online (Sandbox Code Playgroud)

以及括号中的内容:

>> puts s.match(/\[.*\]/)
[THINGS]
Run Code Online (Sandbox Code Playgroud)

但是使用|将它们放在一起 为"或":

>> puts s.match(/\(\d{4}\)|\[.*\]/)
(1999)
Run Code Online (Sandbox Code Playgroud)

...它只是匹配括号及其内容.

这里发生了什么?

我在这做错了什么?

Dav*_*ite 5

尝试这个/\(.+/将匹配从开头(开始的所有内容.如果你把它剥掉了,那么你'Some words'应该得到你需要的东西吗?

两点

  1. 我可能误解了这个问题
  2. 如果(在字符串中出现任何可能性,则需要更复杂的东西.

顺便说一句,在尝试提出正则表达式模式时,我觉得很有价值.

编辑此模式应仅匹配括号中的内容,即使字符串中较早出现杂散括号也是如此.

string.gsub(/(\(|\[).+(\)|\])/, '')
Run Code Online (Sandbox Code Playgroud)