正则表达式的空格,括号和parens

时间:2012-10-25 15:55:44

标签: python regex

我正在尝试以下列形式匹配字符串:

require([ "foo/bar", "foo2/bar2" ])

应该完全忽略空白。我使用以下正则表达式但收效甚微:

require\\(\s*\\[[.\s]*\\]\\)

有什么建议吗?我知道正则表达式尝试是可怕的......

编辑:我正在使用Python!

1 个答案:

答案 0 :(得分:2)

如果您使用带有双引号字符串或类似字符串的Java或PHP,则还需要双倍转义\s。如果没有,那么你需要删除所有双反斜杠(并使它们成为单反斜杠)。另请注意,[.\s]仅匹配句点和空格(.在字符类中丢失其通配符含义)。如果您确实要匹配任何内容,请改用[\s\S]

假设您使用的语言需要双重转义:

require\\(\\s*\\[[\\S\\s]*\\]\\)

请注意,如果在同一个字符串中多次出现此问题,则会导致问题。然后,您将获得从第一个require([到最后一个])的匹配。为避免这种情况,请在重复内禁止]。但是,请注意,如果require中的字符串可能包含],则反过来会导致问题:

require\\(\\s*\\[[^]]*\\]\\)