有没有一种方法可以根据以前的捕获组(而不是以前捕获的)来匹配正则表达式?

史诗熊猫力量

好了,任务是,有一个字符串,可以像post,或者post put甚至是get put post所有这些都必须匹配。最好将deviances设为[space]post,否则get[space]不应该匹配。

目前我想到了这个

^(post|put|delete|get)(( )(post|put|delete|get))*$

但是我对此不满意,因为我不得不指定(post|put|delete|get)两次。它还匹配类似的重复项post post

我想以某种方式对第一组使用向后引用(?),这样我就不必两次指定相同的条件。

然而,反向引用\1会帮我匹配post post,例如,这就是我想要的正好相反。我想这是第一个捕获组中匹配一个单词不是以前在字符串中找到。

这有可能吗?我一直在寻找SO问题,但我的Google-fu却使我望而却步。

威克多·斯特里比尤

如果您使用的是基于PCRE的正则表达式引擎,则可以使用子例程调用(例如(?n),递归子模式)。

^(post|put|delete|get)( (?!\1)(?1))*$
                              ^^^^

正则表达式演示

表达式细节

  • ^ -字符串开始
  • (post|put|delete|get) -组1将替代项之一作为文字子串匹配
  • ( (?!\1)(?1))* -零个或多个序列:
    • - 空间
    • (?!\1)-如果当前位置后的文本与由于向后引用而捕获到第1组的文本相同,则负前瞻将使匹配失败 \1
    • (?1)-对第一个捕获组子例程调用(即,它使用在组1中使用的相同模式)
  • $ -字符串结尾

更新

为了避免匹配字符串一样get post post,你也需要添加一个负向前查找第1组,使得子程序调用意识到,我们不希望以匹配被捕获到第1组相同的值。

^((post|put|delete|get)(?!.*\2))( (?1))*$

正则表达式演示

区别在于,我们将替换捕获到第2组中,并添加了负向超前行为,(?!.*\2)以防止在字符串中进一步捕获到的单词出现。( (?1))*保持不变:现在,子程序递归整个拍摄组1子模式与前瞻。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以根据以前的捕获组(而不是以前捕获的)来匹配正则表达式?

来自分类Dev

有没有一种方法可以只替换Java匹配器正则表达式中的一个捕获组?

来自分类Dev

有没有一种方法可以形成此正则表达式,以使可选组不会出现在匹配组中?

来自分类Dev

有没有一种方法可以简化正则表达式匹配字符?

来自分类Dev

有没有一种方法来获取名称与给定正则表达式匹配的所有函数的列表?

来自分类Dev

Python中有没有一种方法可以创建在正则表达式中匹配的组件的元组?

来自分类Dev

有没有一种方法可以在Python 2中使用带有正则表达式的memoryview?

来自分类Dev

有没有一种方法可以在不使用组的情况下引用re.sub中的整个匹配表达式?

来自分类Dev

有没有一种方法可以让iOS的自动更正忽略UITextView中的单个单词或正则表达式?

来自分类Dev

有没有一种有效的方法来查找满足给定正则表达式的字符串?

来自分类Dev

有没有一种方法可以使用C#8开关表达式来返回字符串值?

来自分类Dev

有没有一种方法可以捕获lambda表达式,以使它不会在编译时被强制采用Expression或Delegate类型的身份?

来自分类Dev

有没有一种方法可以在JavaScript需要表达式的地方包含“ var”列表?

来自分类Dev

有没有一种方法可以从单个列表理解表达式输出多个列表?

来自分类Dev

有没有一种方法可以在表达式树中设置“ DeclaringType”?

来自分类Dev

有没有一种方法可以输出表达式而无需评估jupyter notebook

来自分类Dev

有没有一种方法可以从单个列表理解表达式输出多个列表?

来自分类Dev

有没有一种使用正则表达式格式化kendo网格列的方法?

来自分类Dev

正则表达式中有没有一种方法可以检查某个单词是否在定义的两个位置之一中出现在字符串中?

来自分类Dev

有没有一种简单的方法可以使用正则表达式反转子字符串?

来自分类Dev

有没有一种方法可以读入文件,使用正则表达式替换并输出文件,而不会弄乱行尾和无效字符?

来自分类Dev

有没有一种有效的方法可以在 php 中的更大的正则表达式替换中运行子正则表达式替换语句

来自分类Dev

有没有一种方法可以通过以前定义的Sequelize模型获取属性//关联?

来自分类Dev

有没有一种方法可以通过方法回调在代码内捕获Java对象分配?

来自分类Dev

正则表达式由于重复捕获组而不是重复捕获组而不匹配

来自分类Dev

正则表达式捕获具有完全匹配和部分匹配的子组

来自分类Dev

有没有一种方法可以使用JMX代码捕获网络异常?

来自分类Dev

有没有一种方法可以在合理的时间延迟内捕获和广播直播电台?

来自分类Dev

有没有一种方法可以从Python 3的subprocess.run流传输并捕获输出?

Related 相关文章

  1. 1

    有没有一种方法可以根据以前的捕获组(而不是以前捕获的)来匹配正则表达式?

  2. 2

    有没有一种方法可以只替换Java匹配器正则表达式中的一个捕获组?

  3. 3

    有没有一种方法可以形成此正则表达式,以使可选组不会出现在匹配组中?

  4. 4

    有没有一种方法可以简化正则表达式匹配字符?

  5. 5

    有没有一种方法来获取名称与给定正则表达式匹配的所有函数的列表?

  6. 6

    Python中有没有一种方法可以创建在正则表达式中匹配的组件的元组?

  7. 7

    有没有一种方法可以在Python 2中使用带有正则表达式的memoryview?

  8. 8

    有没有一种方法可以在不使用组的情况下引用re.sub中的整个匹配表达式?

  9. 9

    有没有一种方法可以让iOS的自动更正忽略UITextView中的单个单词或正则表达式?

  10. 10

    有没有一种有效的方法来查找满足给定正则表达式的字符串?

  11. 11

    有没有一种方法可以使用C#8开关表达式来返回字符串值?

  12. 12

    有没有一种方法可以捕获lambda表达式,以使它不会在编译时被强制采用Expression或Delegate类型的身份?

  13. 13

    有没有一种方法可以在JavaScript需要表达式的地方包含“ var”列表?

  14. 14

    有没有一种方法可以从单个列表理解表达式输出多个列表?

  15. 15

    有没有一种方法可以在表达式树中设置“ DeclaringType”?

  16. 16

    有没有一种方法可以输出表达式而无需评估jupyter notebook

  17. 17

    有没有一种方法可以从单个列表理解表达式输出多个列表?

  18. 18

    有没有一种使用正则表达式格式化kendo网格列的方法?

  19. 19

    正则表达式中有没有一种方法可以检查某个单词是否在定义的两个位置之一中出现在字符串中?

  20. 20

    有没有一种简单的方法可以使用正则表达式反转子字符串?

  21. 21

    有没有一种方法可以读入文件,使用正则表达式替换并输出文件,而不会弄乱行尾和无效字符?

  22. 22

    有没有一种有效的方法可以在 php 中的更大的正则表达式替换中运行子正则表达式替换语句

  23. 23

    有没有一种方法可以通过以前定义的Sequelize模型获取属性//关联?

  24. 24

    有没有一种方法可以通过方法回调在代码内捕获Java对象分配?

  25. 25

    正则表达式由于重复捕获组而不是重复捕获组而不匹配

  26. 26

    正则表达式捕获具有完全匹配和部分匹配的子组

  27. 27

    有没有一种方法可以使用JMX代码捕获网络异常?

  28. 28

    有没有一种方法可以在合理的时间延迟内捕获和广播直播电台?

  29. 29

    有没有一种方法可以从Python 3的subprocess.run流传输并捕获输出?

热门标签

归档