【发布时间】:2012-03-31 21:10:12
【问题描述】:
我想构造一个正则表达式,它匹配' 或",然后匹配其他字符,分别在匹配' 或" 时结束,具体取决于在开始时遇到的情况.所以这个问题看起来很简单,可以在最后使用反向引用来解决;下面是一些正则表达式代码(它在 Java 中,所以请注意额外的转义字符,例如 " 之前的 \):
private static String seekerTwo = "(['\"])([a-zA-Z])([a-zA-Z0-9():;/`\\=\\.\\,\\- ]+)(\\1)";
这段代码将成功处理诸如:
"hello my name is bob"
'i live in bethnal green'
当我有这样的字符串时,麻烦就来了:
"hello this seat 'may be taken' already"
使用上面的正则表达式会在遇到'时在初始部分失败,然后它会继续并成功匹配'may be taken'...但这显然是不够的,我需要匹配整个字符串。
我在想的是,我需要一种方法来忽略第一组中不匹配的引号类型,方法是将其作为字符包含在第三组的字符集中。但是,我知道没有办法做到这一点。是否有某种鬼鬼祟祟的 NOT 反向引用函数之类的?我可以用它来引用第一组中不匹配的字符??或者以其他方式解决我的困境?
【问题讨论】:
-
您好,欢迎来到 StackOverflow。我冒昧地重新格式化你的帖子。您可以单击编辑链接以查看我是如何做到的。知道您是否需要发布代码非常重要...
标签: java regex logic backreference