我遇到了一些与以下字符串中匹配class1
,class2
和class3
的正则表达式有关的问题(理想情况下我可以 n 由管道分隔的单词数,因为传递给我方法的类数不是常数)
class1|class2|class3 path/to/resource
我有以下匹配器,只返回class1
。奖金指向任何人都可以找到资源路径的匹配器。
修改
非常感谢你们所有的帮助 - 各地点!
答案 0 :(得分:2)
假设您确信您的输入结构良好,我的建议是通过管道字符和空格分割字符串。例如:
components = "class1|class2|class3 path/to/resource".split(/[ \|]/)
然后,您可以访问包含n个组件的数组,后跟您可以操作访问的资源路径。
resourcePath = components.pop()
classes = components
编辑:最初的主题是OP建议使用Ruby,因此我的回答。
答案 1 :(得分:1)
\w+(\|\w+)*\s+\w+(\/\w+)*
我假设您的类的名称由一个或多个单词字符组成。调整是否比这更受限制。例如,仅对编号类使用class\d+
。
我们有一个类名,后跟任意数量的[管道后跟类名]。然后我们有一个或多个空格,后面跟着基本相同的东西,但这次使用斜杠而不是管道 我用反斜杠逃脱了管道和斜线。
答案 2 :(得分:1)
string = "class1|class2|class3 path/to/resource".split(%r{[| ]})
=> [“class1”,“class2”,“class3”,“path / to / resource”]
答案 3 :(得分:1)
如果要将regex与您提供的输入一起使用,这将提取您的类和路径:
([\w/]+)\|? ?
<强> INPUT 强>
class1|class2|class3 path/to/resource
<强>输出强>
class1
class2
class3
path/to/resource
答案 4 :(得分:1)
我只会做两次分裂:
string = 'class1|class2|class3 path/to/resource'
p string.split.first.split('|') #=> ["class1", "class2", "class3"]