带有前缀和可选后缀的正则表达式
Regex with prefix and optional suffix
这可能是关于 SO 上的正则表达式可选后缀的 100+1 个问题,但我没有找到任何可以帮助我的问题:(
我需要从通用模式中提取一部分字符串:
prefix/s/o/m/e/t/h/i/n/g/suffix
使用正则表达式。 前缀是常量,后缀可能根本不会出现,所以prefix/(.+)/suffix
不符合我的要求。模式 prefix/(.+)(?:/suffix)?
returns s/o/m/e/t/h/i/n/g/suffix
。 (?:/suffix)?
部分一定比较贪心。
我想从这些输入字符串中得到 s/o/m/e/t/h/i/n/g
:
prefix/s/o/m/e/t/h/i/n/g/suffix
prefix/s/o/m/e/t/h/i/n/g/
prefix/s/o/m/e/t/h/i/n/g
提前致谢!
如果 prefix
之前或 suffix
之后的字符允许,请尝试 prefix(.*?)(?:/?(?:suffix|$))
。
这要求匹配尽可能短(不情愿的量词),并在 3 件事之一之前:输入结束前的单个斜杠,/suffix
或输入结束.这将匹配您提供的测试用例中的 /s/o/m/e/t/h/i/n/g
但会匹配更多输入,例如 prefix/s/o/m/e/t/h/i/n/g/suff
(这在 IMO 中是可以的,因为您不知道 /suff
是否是匹配或后缀中的拼写错误)。
尝试
prefix\/(.+?)\/?(?:suffix|$)
正则表达式需要知道匹配何时完成,因此匹配 suffix
或行尾 ($
),并进行捕获非贪心.
这可能是关于 SO 上的正则表达式可选后缀的 100+1 个问题,但我没有找到任何可以帮助我的问题:(
我需要从通用模式中提取一部分字符串:
prefix/s/o/m/e/t/h/i/n/g/suffix
使用正则表达式。 前缀是常量,后缀可能根本不会出现,所以prefix/(.+)/suffix
不符合我的要求。模式 prefix/(.+)(?:/suffix)?
returns s/o/m/e/t/h/i/n/g/suffix
。 (?:/suffix)?
部分一定比较贪心。
我想从这些输入字符串中得到 s/o/m/e/t/h/i/n/g
:
prefix/s/o/m/e/t/h/i/n/g/suffix
prefix/s/o/m/e/t/h/i/n/g/
prefix/s/o/m/e/t/h/i/n/g
提前致谢!
如果 prefix
之前或 suffix
之后的字符允许,请尝试 prefix(.*?)(?:/?(?:suffix|$))
。
这要求匹配尽可能短(不情愿的量词),并在 3 件事之一之前:输入结束前的单个斜杠,/suffix
或输入结束.这将匹配您提供的测试用例中的 /s/o/m/e/t/h/i/n/g
但会匹配更多输入,例如 prefix/s/o/m/e/t/h/i/n/g/suff
(这在 IMO 中是可以的,因为您不知道 /suff
是否是匹配或后缀中的拼写错误)。
尝试
prefix\/(.+?)\/?(?:suffix|$)
正则表达式需要知道匹配何时完成,因此匹配 suffix
或行尾 ($
),并进行捕获非贪心.