【发布时间】:2014-08-28 14:18:40
【问题描述】:
我正在使用一个采用 PCRE 兼容正则表达式的系统。
系统将捕获组 1 存储到数据库中。
我需要将带有分隔符的字符串的两半(不包括分隔符)捕获为单个捕获组。
给定字符串:“我想捕获这个位,但不是这个位,绝对是这个位”
我知道我可以创建一个像这样的正则表达式:
([A-Za-z\s]*) but not this bit([A-Za-z\s]*)
这会给我两个捕获组: 第 1 组:“我想捕捉这一点” 第 2 组:“当然还有这一点”
但是,我错过了一半的结果,因为第 1 组是所有存储的。
【问题讨论】:
-
你为什么不试试这个regex101.com/r/lD8nJ2/2 ?
-
你缺少
g修饰符,它告诉正则表达式在第一次匹配后继续,所以通常是/([A-Za-z/s]*) but not this bit([A-Za-z/s]*)/g,取决于你的 PCRE 系统,语法可能会有所不同 -
一种方法是首先从输入中检查输入是否包含`但不包含此位
. If it does then remove但不包含此位`,然后捕获其余捕获组#1。 -
您的意思是在模式中使用
\s而不是/s?这对于更大的问题并不重要,但正如所写的,由于and之前的空格,第二部分将不匹配。我宁愿怀疑在您似乎正在工作的约束下,没有办法在一次操作中完成您想要的操作。 -
不可能在一个捕获组中连接两个单独的子字符串。