[英]Regex catching a weird string with {{ }} signs
字符串示例
{{ai|Perseverance|Garen}} is no longer removed by combat dehancing effects such as {{ai|Blood Scent|Warwick}}.
我要赶{{ai|Perseverance|Garen}}
从这个{{ai| |Garen}}
{{ai| |Garen}}
,中间部分与{{ai| |Warwick}}
{{ai| |Warwick}}
这是我想出的:
(\{\{ai\|)\w+(\|\w+\}\})
它很可能会干扰第一个,但是有了Perserverance,我可以做两次正则表达式来摆脱第一个{{ai| and then |Garen}}
{{ai| and then |Garen}}
使用(\\{\\{ai\\|)
,然后再使用(\\|\\w+\\}\\})
。
有没有办法在一个正则表达式中做到这一点?
更新:我正在使用PHP,只是为了清楚
您的比赛在以下正则表达式的第1组中
\{\{[^|]*\|([^|]*)
我假设您想删除{{some|
和|thing}}
部分,并保留中间的内容。
您可以使用
{{[^|]*\|([^|]*)\|[^|]*}}
和$1
作为替换模式。
正则表达式表示:
{{
-两个文字{
符号 [^|]*\\|
-除|
以外的零个或多个字符 (带有[^|]*
),后跟文字|
([^|]*)
-匹配零个或多个除|
以外的字符的组1 \\|
-文字|
[^|]*
-再次为零或多个除|
以外的字符 }}
-关闭}}
观看演示
请注意,当3 |
{{
/ }}
分隔的部分。
在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.