字符串示例
{{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,我可以使用{{ai| and then |Garen}}
首先使用(\{\{ai\|)
然后使用(\|\w+\}\})
进行两次正则表达式。
有没有办法在一个正则表达式中执行此操作?
更新:我使用PHP只是为了清楚
答案 0 :(得分:1)
您的比赛是以下正则表达式的第1组
\{\{[^|]*\|([^|]*)
答案 1 :(得分:1)
我假设您要删除{{some|
和|thing}}
部分,并保留中间的内容。
您可以使用
{{[^|]*\|([^|]*)\|[^|]*}}
和$1
作为替换模式。
正则表达式意味着:
{{
- 两个文字{
符号[^|]*\|
- 除|
以外的零个或多个字符([^|]*
)后跟文字|
([^|]*)
- 与|
\|
- 文字|
[^|]*
- 除|
}}
- 关闭}}
请参阅demo
请注意,当|
/ {{
内有3 }}
个分隔的部分时,它们会有用。
在PHP中,您可以使用following code:
$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