字符串示例
{{ai|Perseverance|Garen}} is no longer removed by combat dehancing effects such as {{ai|Blood Scent|Warwick}}.我想从这个{{ai|Perseverance|Garen}}中捕获{{ai| |Garen}},并保持中间部分与{{ai| |Warwick}}相同。
这就是我想出来的:
(\{\{ai\|)\w+(\|\w+\}\})这是相当接近它上下班的第一个,但使用Perserverance,我可以做两次regex,以摆脱第一个{{ai| and then |Garen}}首先使用(\{\{ai\|),然后(\|\w+\}\})。
有没有办法在一次审判中做到这一点?
更新:我使用PHP只是为了澄清
发布于 2016-01-03 20:06:58
我假设您希望删除{{some|和|thing}}部件,并保持中间位置。
您可以使用
{{[^|]*\|([^|]*)\|[^|]*}}以$1为替代模式。
regex指的是:
{{ -两个文字{符号[^|]*\| -除|以外的零或多个字符(带[^|]*),后面跟着文字|([^|]*) -与|以外的零或多个字符匹配的第1组\| -文字|[^|]* --除了|之外,还是零或多个字符}} -关闭}}请参阅演示
注意,当|/}}中有3个-separated部件时,它就能工作。
在PHP中,您可以使用以下代码
$re = '~{{[^|]*\|([^|]*)\|[^|]*}}~';
$str = "{{ai|Perseverance|Garen}} is no longer removed by combat dehancing effects such as {{ai|Blood Scent|Warwick}}";
$result = preg_replace($re, '\1', $str);
echo $result;
// => Perseverance is no longer removed by combat dehancing effects such as Blood Scent发布于 2016-01-03 19:18:36
您的匹配处于下列正则表达式的第1组中
\{\{[^|]*\|([^|]*)https://stackoverflow.com/questions/34580532
复制相似问题