【问题标题】:there is no char between 2 group with regex使用正则表达式的 2 组之间没有字符
【发布时间】:2020-09-06 01:50:34
【问题描述】:

我需要一个正则表达式来过滤路径列表。

我的示例列表如下:

models/user.js
models/adapter.js
models/acquire.js
models/schema/extension.js
models/schema/permission.js
modules/breaktime/models/break.js
modules/breaktime/models/rule.js
modules/breaktime/models/step.js
modules/pbxmanager/models/group.js
modules/pbxmanager/models/member.js
modules/pbxmanager/models/shift.js
modules/breaktime/models/request.js
modules/breaktime/models/state.js

我会定义确切的起始路径,并且只想获取该路径下的文件,而不是从子文件夹中获取。

例如;如果我在正则表达式中将 models/ 设置为起始字符串,我应该只得到前 3 行,而不是架构文件夹下的那些。

我试图创建像 (^start string)(exactly nothing)(end string$) 这样的组,但没有运气。

(^models\/)[\w{0}](\/[\w]+\.js$)

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

我找不到如何在正则表达式中设置“两组之间无”。

【问题讨论】:

  • 你是这个意思吗? ^models\/[^\/]+\.js$regex101.com/r/5DbDDJ/1 或使用文字字符^models\/\w+\.js$
  • 这感觉就像用锤子敲螺丝一样:你实际上在做什么,这需要经过一连串的线?这些数据来自哪里以及您试图将结果用于什么目的?
  • 感谢@Thefourthbird 你摇滚!
  • 你很好地总结了我的生活@Mike'Pomax'Kamermans :) 我在应用程序开始时生成此列表以方便访问。所有这些都是公共和动态创建的模式的续集模型文件。而不是在控制器中导入所有模型,而是在循环中同步它们!我只需要正确过滤

标签: javascript regex url


【解决方案1】:

如果您使用字符类[\w{0}],则至少需要一个字符,可以是单词字符{0}

在你的情况下,你不希望这样,你可以省略它的字符类,它会给你(^models\/)(\/[\w]+\.js$),它有太多的正斜杠。

如果你也删除多余的/,并删除不必要的组和括号,你会得到

^models\/\w+\.js$

Regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多