Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式将字符串中的所有内容(字符串的一部分除外)捕获到组中_Regex_Regex Group - Fatal编程技术网

Regex 正则表达式将字符串中的所有内容(字符串的一部分除外)捕获到组中

Regex 正则表达式将字符串中的所有内容(字符串的一部分除外)捕获到组中,regex,regex-group,Regex,Regex Group,我正在尝试创建一个正则表达式,它将捕获字符串中的所有内容,除了字符串的特定部分。最好的出发点似乎是使用小组 例如,我想从字符串中捕获除“production”和“public”之外的所有内容。 样本输入: 加州公共本地卡制作 内华达州公共生产 将产生输出 加州本地卡 内华达州 在上,我可以提取不需要的字符串 (production|public)\g 但是如何取而代之地捕捉我想要的东西呢? 以下内容将让我了解生产和公众之间的关系,但不是在之前或之后的任何事情: 翻转它并转到\s\s实际上可以在

我正在尝试创建一个正则表达式,它将捕获字符串中的所有内容,除了字符串的特定部分。最好的出发点似乎是使用小组

例如,我想从字符串中捕获除“production”和“public”之外的所有内容。 样本输入:

加州公共本地卡制作

内华达州公共生产

将产生输出

加州本地卡

内华达州

在上,我可以提取不需要的字符串

(production|public)\g
但是如何取而代之地捕捉我想要的东西呢? 以下内容将让我了解生产和公众之间的关系,但不是在之前或之后的任何事情:

翻转它并转到\s\s实际上可以在两个单独的子组(两个匹配中的组2)中提供所需的内容:

但如何将结果结合起来呢?理想情况下,我希望将它们提取为一个单独的命名组,这就是我得到的:

([\s\s]*?)(生产|公共))(?P

这在正则表达式中似乎是不可能解决的。

正则表达式匹配始终是样本字符串的连续范围。因此,答案是“否,您不能编写与问题中所述的一系列串联子字符串匹配的正则表达式”

但是,通过用空字符串替换不必要的单词,这种流行的任务很容易解决

s/-production|production-|-public|public-//g
(或您正在使用的语言中的等效语言)

注意。如果支持
\b
,则将其拼写为 s/-production\b |\b production-|-public\b |\b public-//g


(为了避免与“subproduction”或“publication”等词相匹配),

您的正则表达式就快到了:

([\s\S]*?)(?>production|public)
但这会导致多个匹配

Match 1
Full match  0-17    `california-public`
Group 1.    0-11    `california-`

Match 2
Full match  17-39   `-local-card-production`
Group 1.    17-29   `-local-card-`

因此,您必须多次匹配才能检索结果。

您的语言/环境是什么?您可以拆分/应用/组合。我认为不清楚您想要获得什么,您正在使用的特定工具以及不允许执行的操作。
s/-production|production-|-public|public-//g
([\s\S]*?)(?>production|public)
Match 1
Full match  0-17    `california-public`
Group 1.    0-11    `california-`

Match 2
Full match  17-39   `-local-card-production`
Group 1.    17-29   `-local-card-`