Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 - Fatal编程技术网

Regex 带有可选前缀或后缀的正则表达式

Regex 带有可选前缀或后缀的正则表达式,regex,Regex,我已经使用|成功地在字符串的一部分包含可选项,但现在我需要在另一个字符串的任一侧包含可选项,例如 (Near|In|Close to)(A|B|C|D|E)(Vicinity|Area) 我将接受以下任何一项: 近 或 地区 除了做什么 ((Near|In|Close to)(A|B|C|D|E))|((A|B|C|D|E)(Vicinity|Area)) 我想不出一种方法来使用可选标志来做一些看起来更像的事情 (靠近(A | B | C | D | E))(附近地区) 在接受任何一方的

我已经使用|成功地在字符串的一部分包含可选项,但现在我需要在另一个字符串的任一侧包含可选项,例如

(Near|In|Close to)(A|B|C|D|E)(Vicinity|Area)
我将接受以下任何一项:

  • 近 或
  • 地区
除了做什么

((Near|In|Close to)(A|B|C|D|E))|((A|B|C|D|E)(Vicinity|Area))
我想不出一种方法来使用可选标志来做一些看起来更像的事情

(靠近(A | B | C | D | E))(附近地区)


在接受任何一方的情况下

您应该在捕获组中使用惰性所有格量词
?+

(Near |In |Close to )?+(A|B|C|D|E)( Vicinity| Area)?+
我还必须在匹配中添加空格,因为数据中有空格

你也可以这样写:

(Near |In |Close to )?+([ABCDE])( Vicinity| Area)?+

演示:


使用非捕获组演示:

您可以做:(靠近| In | Close)?(A | B | C | D | E)(邻近|区域)或(靠近| In | Close){0,1}(A | B | C | D | E)(邻近|区域)如果两者都不适用,您是否也希望它接受?所以你只有“A”或“B”?你用什么语言写这篇文章的可能副本?i、 e.哪个正则表达式引擎?@ClickRick我正在使用正则表达式phpHi,这要感谢它匹配的问题:在A、A区域、A附近。它需要有要匹配的前缀或后缀字符串。所以我在尽量避免((近中)(A | B | C)|(A | B | C)(附近地区))。我希望有某种方法可以让包含核心术语的选项要么/要么不重复核心。