正则表达式-查找所有以$ _开头的单词,它们都落在模板字符串之间

lop

我可以用一个正则表达式解决以下问题吗?我知道可以用两个单独的正则表达式来完成,但是我很好奇是否可以只用一个来完成吗?

查找以$ _开头的单词(变量)的所有实例,但仅当它们落在模板插值定界符(<%=和%>)之间的任意位置时

因此,带有以下文本:

<div>
    <% if ( $_createDiv) { %>
      <div>Div created!</div>
    <% } %>
    <h2>
      <span><%=   $_var1   %></span>
    </h2>
    <div><%= markdown.toHTML($_var2 )  %></div>
    <div><%= $_var3 +' more text ' + $_var4 %></div>
</div>

预期结果应仅为:$ _var1,$ _ var2,$ _ var3,$ _ var4注意:$ _createDiv不应返回,因为它位于“求值”定界符中(<%而不是<%=)

https://regex101.com/r/dAesYE/1

是否可以使用单个正则表达式来执行此操作,还是我需要使用两个正则表达式?我可以通过运行两个/(?<=<%=).*(?=%>)/gm来查找定界符之间的所有文本,然后遍历结果并运行/\B\$_\w+/gm以获取变量。我只是好奇是否可以使用单个正则表达式。

对于上下文,我试图找到它们,以便可以运行替换以将变量名括在一个函数中,例如:

myFunc($_var1)
维克多·史翠比维

假设您可以针对ECMAScript 2018+兼容环境,则可以使用

/(?<=<%=(?:(?!<%=|%>).)*)\B\$_\w+(?=(?:(?!<%=|%>).)*%>)/gs

请参阅regex演示否则,您应该使用当前的两步方法。

详细资料

  • (?<=<%=(?:(?!<%=|%>).)*) -向后的正向查找,要求其图案立即匹配当前位置的左侧:
    • <%= -子字符串
    • (?:(?!<%=|%>).)*-不会开始a<%=%>char序列的任意一个char,零次或多次出现,并尽可能多
  • \B\$_\w+-一个$char前面有一个非单词char_和一个或多个单词char
  • (?=(?:(?!<%=|%>).)*%>) -正向前瞻,要求其图案立即匹配当前位置的右侧:
    • (?:(?!<%=|%>).)*不开始a<%=%>char序列的任意一个char,零个或多个出现,并尽可能多
    • %>-%>子字符串。请参阅JavaScript演示:

const regex = /(?<=<%=(?:(?!<%=|%>).)*)\B\$_\w+(?=(?:(?!<%=|%>).)*%>)/gs;
const text = "<div>\r\n    <% if ( $_createDiv) { %>\r\n      <div>Div created!</div>\r\n    <% } %>\r\n    <h2>\r\n      <span><%=   $_var1   %></span>\r\n    </h2>\r\n    <div><%= markdown.toHTML($_var2 )  %></div>\r\n    <div><%= $_var3 +' more text ' + $_var4 %></div>\r\n</div>";
console.log(text.match(regex));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式查找字符串中的所有链接

来自分类Dev

正则表达式-查找字符串中的所有匹配项

来自分类Dev

如何编写正则表达式以查找XCode项目中的所有字符串

来自分类Dev

正则表达式替换以某个子字符串开头的所有单词的所有出现

来自分类Dev

使用正则表达式查找<和>之间的所有单词

来自分类Dev

使用正则表达式查找字符串中的所有匹配项

来自分类Dev

正则表达式查找带引号的字符串中的所有大括号

来自分类Dev

正则表达式查找以特定字符串开头的行中的所有空格

来自分类Dev

正则表达式:在所有行中查找多个匹配的字符串

来自分类Dev

正则表达式:查找特定字符串后的所有数字

来自分类Dev

查找与正则表达式golang匹配的所有字符串

来自分类Dev

Vim查找并替换所有出现的正则表达式字符串

来自分类Dev

正则表达式以查找单词中的所有字符是否都是相同的特定字符

来自分类Dev

查找所有字符串的正则表达式是在Java中以$开头的正则表达式

来自分类Dev

用正则表达式查找字符串中的所有字母

来自分类Dev

正则表达式以所有顺序查找字符串

来自分类Dev

使用正则表达式查找定界符之间的所有单词

来自分类Dev

正则表达式查找和替换:删除除以“#”开头的单词以外的所有内容?

来自分类Dev

查找以@开头且包含所有字符的所有单词,除了正则表达式中的空格

来自分类Dev

需要正则表达式来查找特定模式的所有子字符串

来自分类Dev

使用正则表达式查找<和>之间的所有单词

来自分类Dev

正则表达式查找带引号的字符串中的所有大括号

来自分类Dev

正则表达式查找以特定字符串开头的行中的所有空格

来自分类Dev

正则表达式:查找特定字符串后的所有数字

来自分类Dev

正则表达式-查找所有不匹配模式的字符串

来自分类Dev

正则表达式:选择所有以.dot开头的单词/字符串

来自分类Dev

使用正则表达式查找字符串中不包含特定字母的所有单词

来自分类Dev

如果字符串有 X 个以@#$ 开头的单词,则 Python 正则表达式匹配:

来自分类Dev

使用正则表达式查找字符串中的所有匹配项

Related 相关文章

  1. 1

    使用正则表达式查找字符串中的所有链接

  2. 2

    正则表达式-查找字符串中的所有匹配项

  3. 3

    如何编写正则表达式以查找XCode项目中的所有字符串

  4. 4

    正则表达式替换以某个子字符串开头的所有单词的所有出现

  5. 5

    使用正则表达式查找<和>之间的所有单词

  6. 6

    使用正则表达式查找字符串中的所有匹配项

  7. 7

    正则表达式查找带引号的字符串中的所有大括号

  8. 8

    正则表达式查找以特定字符串开头的行中的所有空格

  9. 9

    正则表达式:在所有行中查找多个匹配的字符串

  10. 10

    正则表达式:查找特定字符串后的所有数字

  11. 11

    查找与正则表达式golang匹配的所有字符串

  12. 12

    Vim查找并替换所有出现的正则表达式字符串

  13. 13

    正则表达式以查找单词中的所有字符是否都是相同的特定字符

  14. 14

    查找所有字符串的正则表达式是在Java中以$开头的正则表达式

  15. 15

    用正则表达式查找字符串中的所有字母

  16. 16

    正则表达式以所有顺序查找字符串

  17. 17

    使用正则表达式查找定界符之间的所有单词

  18. 18

    正则表达式查找和替换:删除除以“#”开头的单词以外的所有内容?

  19. 19

    查找以@开头且包含所有字符的所有单词,除了正则表达式中的空格

  20. 20

    需要正则表达式来查找特定模式的所有子字符串

  21. 21

    使用正则表达式查找<和>之间的所有单词

  22. 22

    正则表达式查找带引号的字符串中的所有大括号

  23. 23

    正则表达式查找以特定字符串开头的行中的所有空格

  24. 24

    正则表达式:查找特定字符串后的所有数字

  25. 25

    正则表达式-查找所有不匹配模式的字符串

  26. 26

    正则表达式:选择所有以.dot开头的单词/字符串

  27. 27

    使用正则表达式查找字符串中不包含特定字母的所有单词

  28. 28

    如果字符串有 X 个以@#$ 开头的单词,则 Python 正则表达式匹配:

  29. 29

    使用正则表达式查找字符串中的所有匹配项

热门标签

归档