0

我想使用一些正则表达式来匹配一些括号的内容和紧随其后的文本,直到出现一些空格,除非在到达那个空格之前还有另一个左括号。

例如在下面:

- (NSArray *)componentsForRegularExpression:(NSString *)regex

(NSArray *)并且(NSString *)regex会匹配。

然而,使用我已经拥有的正则表达式,可以(NSString *)regex正确匹配,而不是仅仅匹配(NSArray *)它匹配(NSArray *)componentsForRegularExpression:我不希望它做的全部。

我使用的正则表达式如下:

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

那么我将如何使用正则表达式来实现这一点,始终匹配括号的内容,但也只匹配它之后的内容(直到空格),因为那个时期没有另一个开放括号?

4

3 回答 3

3

这个怎么样:

\(.*?\)([^\s(]*(?=\s|$))?

它匹配括号中的内容,然后可选地匹配任意数量的非空格非)字符,后跟前瞻以匹配空格(或字符串结尾,以防它可能出现在字符串的末尾)。

请注意,不应有|in [](除非您想匹配|字符)。

现场演示(用括号括起来并添加了非捕获组 ( ?:))。

于 2013-06-19T12:17:54.300 回答
1

这个正则表达式应该适合你:

(\([^)]*\)(?:(?![^(]*\()[^\s]*|))

现场演示:http ://www.rubular.com/r/opurflXx2E

于 2013-06-19T12:31:04.813 回答
1

我看到我得到的答案与@Dukeling 大致相同。然而,我确实设法避免了惰性匹配。

\([^)]+\)(?:[^\s(]*(?=$|\s))?
于 2013-06-19T12:39:48.303 回答