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