如何拆分{{与}}包裹的字符串并提取两者中间的内容
提取{{}}包裹内容的实现方法
核心逻辑是通过正则表达式的非贪婪匹配,捕获{{和}}中间的所有内容,不同编程语言的实现如下:
正则说明
使用{{(.*?)}}作为匹配规则:
- 外层的
{{和}}匹配包裹符号 - 括号
()为捕获组,用来提取两个符号中间的内容 .*?为非贪婪匹配,保证只会匹配到距离最近的}},避免多段匹配出错
各语言实现示例
JavaScript
const inputStr = "{{number1}} + {{number2}} > {{number3}}"; const matchRegex = /{{(.*?)}}/g; const result = []; let currentMatch; while ((currentMatch = matchRegex.exec(inputStr)) !== null) { result.push(currentMatch[1]); } // 输出结果:['number1', 'number2', 'number3'] console.log(result);
Python
import re input_str = "{{number1}} + {{number2}} > {{number3}}" result = re.findall(r"{{(.*?)}}", input_str) # 输出结果:['number1', 'number2', 'number3'] print(result)
Java
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExtractContent { public static void main(String[] args) { String inputStr = "{{number1}} + {{number2}} > {{number3}}"; Pattern pattern = Pattern.compile("\\{\\{(.*?)\\}\\}"); Matcher matcher = pattern.matcher(inputStr); List<String> result = new ArrayList<>(); while (matcher.find()) { result.add(matcher.group(1)); } // 输出结果:[number1, number2, number3] System.out.println(result); } }
内容的提问来源于stack exchange,提问作者Alfredo Rafael
相关产品推荐
相关产品推荐

