使用RegExp提取特殊字符序列之间的值

时间:2018-08-15 08:12:32

标签: javascript regex

我有某种微型模板引擎,需要从任何 Uri treeUri = data.getData(); DocumentFile pickedDir = DocumentFile.fromTreeUri(MainActivity.this, treeUri); DocumentFile mFile = pickedDir.createFile("text/plain", "Note"); OutputStream out = getContentResolver().openOutputStream(mFile.getUri()); out.write(infos.get(i).getContent().getBytes()); out.flush(); out.close(); 事件之间的字符串中提取值。

我尝试用以下方法进行测试:

%{}%

但是当所需的输出应该为const EXTRACT_VALUES = /%{(.*?)}%/g let testString = 'bla bla %{var1}% bla bla {var11} bla bla %{var22} bla bla %{{var33}}% bla bla %{var4}% bla bla %{ var5 }%' let values = [] let field while((field = EXTRACT_VALUES.exec(testString)) != null) { values.push(field[1]) } console.log(values) 时,我得到的输出为["var1", "var22} bla bla %{{var33}", "var4", " var5 "]

要实现此目标,我需要在RegExp中进行哪些更改?

1 个答案:

答案 0 :(得分:3)

尝试不要在捕获元素中使用{字符}[^{}]+而不是一揽子捕获,这会使您获得的其他字符无效。

const EXTRACT_VALUES = /%{([^{}]+)}%/g