2013-11-15 147 views
-1

我有一些問題要起一個class2匹配class1,一個正則表達式,並class3分離(理想情況下,我可以有ň通過管道分離,作爲字數傳遞給我的方法類數量不是常數)正則表達式字符串由以下字符串豎線

class1|class2|class3 path/to/resource 

我有以下的匹配僅返回class1。獎金指向任何人都可以找到我的資源路徑匹配器。

編輯

非常感謝所有幫助 - 點四周!

回答

2

假設您確信您的輸入將會很好地形成,我的建議是將管道字符和空格分開您的字符串。例如:

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

然後,您可以訪問包含n個組件的數組,然後訪問您可以操作訪問的資源路徑。

resourcePath = components.pop() 
classes = components 

編輯:原來的話題建議OP是使用Ruby,因此我的答案。

+0

看來我是處理這個問題都錯了 - 非常感謝你! :-) – nicohvi

+0

@Nicolay是的,雖然可以通過正則表達式得到你想要的東西,我在我的答案中提供了; )但Pat Teen的解決方案更合適。 – Tafari

1
\w+(\|\w+)*\s+\w+(\/\w+)* 

我假定你的類的名字由一個或多個單詞字符組成。如果他們比這更受限制,請調整。例如,僅對編號類使用class\d+

我們有一個班級名稱,後面跟着任意數量的[一個管道,後面跟着班級名稱]。然後我們有一個或多個空格,接下來是基本相同的東西,但這次使用斜槓而不是管道。
我已經用反斜線將管道和斜線都轉義了。

+0

在兩個不同的正則表達式編譯器和C#中檢查過它,在任何情況下都不起作用。 – Tafari

+0

啊,我明白了。我將OP的問題解釋爲希望匹配整個字符串,如http://regexr.com?3771p – SQB

1
string = "class1|class2|class3 path/to/resource".split(%r{[| ]}) 

=> [ 「class1的」, 「等級2」, 「CLASS3」, 「路徑/到/資源」]

1

如果你想使用正則表達式與您提供的輸入,這將提取您的類和路徑:

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

INPUT

class1|class2|class3 path/to/resource 

輸出

class1 
class2 
class3 
path/to/resource 
1

我只想做兩個分裂:

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

p string.split.first.split('|') #=> ["class1", "class2", "class3"] 
相關問題