-1

我在想出一个匹配class1,class2class3以下字符串的正则表达式时遇到了一些问题(理想情况下,我可以有n个用管道分隔的单词,因为传递给我的方法的类数不是恒定的)

class1|class2|class3 path/to/resource

我有以下匹配器,它只返回class1. 奖金点也指向任何可以为我找到资源路径的匹配器的人。

编辑

非常感谢您的所有帮助 - 周围的点!

4

5 回答 5

2

假设您确信您的输入格式正确,我的建议是用竖线字符和空格分割您的字符串。例如:

components = "class1|class2|class3 path/to/resource".split(/[ \|]/)

然后,您将可以访问包含 n 个组件的数组,后跟您可以操作访问的资源的路径。

resourcePath = components.pop()
classes = components

编辑:最初的主题是建议 OP 使用 Ruby,因此我的回答。

于 2013-11-15T07:37:04.757 回答
1
\w+(\|\w+)*\s+\w+(\/\w+)*

我假设您的课程名称由一个或多个单词字符组成。如果它们比这更受限制,请进行调整。例如,class\d+仅用于编号类。

我们有一个类名,后跟任意数量的[管道后跟类名]。然后我们有一个或多个空格,后面跟着基本相同的东西,但这次使用斜杠而不是管道。
我已经用反斜杠逃脱了管道和斜杠。

于 2013-11-15T07:47:08.927 回答
1
string = "class1|class2|class3 path/to/resource".split(%r{[| ]})

=> [“class1”,“class2”,“class3”,“路径/到/资源”]

于 2013-11-15T07:54:58.353 回答
1

如果您想将正则表达式与您提供的输入一起使用,这将提取您的类和路径:

([\w/]+)\|? ?

输入

class1|class2|class3 path/to/resource

输出

class1
class2
class3
path/to/resource
于 2013-11-15T08:01:38.817 回答
1

我只会做两个拆分:

string = 'class1|class2|class3 path/to/resource'

p string.split.first.split('|') #=> ["class1", "class2", "class3"]
于 2013-11-15T08:04:47.943 回答