从字符串中匹配和提取信息的特定模式
Specific pattern to match and extract info from string
我需要能够识别符合以下模式的字符串:
':模块名称' || 'com.example.ClassName' || ':模块名称:com.example.ClassName' || 'http://url';
我需要确定字符串是否与上述模式之一匹配,让我们将它们分成 3 组(urls、本地和 none),其中 url 代表一个有效的 url 字符串。另一方面,本地必须有 3 个不同的变体 (':module-name' || 'com.example.ClassName' || ':module-name:com.example.ClassName') 如果是这种情况我需要提取模块和组件名称。
模块名称必须是有效的 nodejs 包名称,组件名称必须是有效的 Class 名称(我得到的有效 class 名称已经包含在这个 RegExp 中:/^@? [a-z_A-Z]\w+(?:.@?[a-z_A-Z]\w+)*$/).
我需要的是一种方法来识别字符串属于其中一个组(url、本地或 none),如果是本地,则提取模块和组件名称。正则表达式解决方案的最佳...
谢谢
这行得通吗? See on regex101
^:.+-.+:.+\..+\..+|^:.+-.+|^.+\..+\..+|^http[s]?:\/\/.+
它匹配 :x-x
、x.x.x
、:x-x:x.x.x
、http[s]://x
,x 是重复 1 次到无限次之间的任何字符。如果前面有某些内容,它将不匹配任何一个。但它会匹配 com.class.class.class.class
和 http://invalidUrl
。正如您所说,您检查 class 名称是否正确。如果您只想要有效的 url,则可以将 ^http[s]?:\/\/.+
替换为 https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?
或任何验证 url 的正则表达式。 (这个不是我发明的)
通过使用 Croutonix 引用的令人惊叹的网络工具,我能够生成 RegExp 并实时测试它:
解法是/^:([a-z][a-z_-])+:{0,1}([a-z_A-Z]\w+(?:.? [a-z_A-Z]\w+))$/gm.exec(字符串)
我需要能够识别符合以下模式的字符串:
':模块名称' || 'com.example.ClassName' || ':模块名称:com.example.ClassName' || 'http://url';
我需要确定字符串是否与上述模式之一匹配,让我们将它们分成 3 组(urls、本地和 none),其中 url 代表一个有效的 url 字符串。另一方面,本地必须有 3 个不同的变体 (':module-name' || 'com.example.ClassName' || ':module-name:com.example.ClassName') 如果是这种情况我需要提取模块和组件名称。
模块名称必须是有效的 nodejs 包名称,组件名称必须是有效的 Class 名称(我得到的有效 class 名称已经包含在这个 RegExp 中:/^@? [a-z_A-Z]\w+(?:.@?[a-z_A-Z]\w+)*$/).
我需要的是一种方法来识别字符串属于其中一个组(url、本地或 none),如果是本地,则提取模块和组件名称。正则表达式解决方案的最佳...
谢谢
这行得通吗? See on regex101
^:.+-.+:.+\..+\..+|^:.+-.+|^.+\..+\..+|^http[s]?:\/\/.+
它匹配 :x-x
、x.x.x
、:x-x:x.x.x
、http[s]://x
,x 是重复 1 次到无限次之间的任何字符。如果前面有某些内容,它将不匹配任何一个。但它会匹配 com.class.class.class.class
和 http://invalidUrl
。正如您所说,您检查 class 名称是否正确。如果您只想要有效的 url,则可以将 ^http[s]?:\/\/.+
替换为 https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?
或任何验证 url 的正则表达式。 (这个不是我发明的)
通过使用 Croutonix 引用的令人惊叹的网络工具,我能够生成 RegExp 并实时测试它:
解法是/^:([a-z][a-z_-])+:{0,1}([a-z_A-Z]\w+(?:.? [a-z_A-Z]\w+))$/gm.exec(字符串)