2016-09-16 73 views
0

我嘗試正則表達式這一點,但它不工作:如何正則表達式多變量

這是我的字符串:

asdasd2-bgbegebr23-yiyity23-iopip123 

所以我試着去得到:之間的所有值「 - 」,但它不工作:使用IM其實這個:

/(-)(.*)(-)/gi 

爲正則表達式,但不工作,感謝大家:S

+1

'( - )(。*?) ( - )'........ – vks

+1

你如何定義「所有值」 - 在你的例子中,你想獲得'bgbegebr23-yiyity23'或'bgbegebr23'和'yiyity23'或者'asdasd2','' bgbegebr23','yiyity23'和'iopip123'? – vlaz

+1

如果這是一個選項,你可以使用'string.split('delimiter')'。比正則表達式更容易,更清晰 – dlkulp

回答

3

這是因爲做t包括德短跑。你應該刪除短劃線。試試這個:

/([^ - ] +)/ GI

+1

這是最簡單的解決方案是的。但是,它相當於執行'str.split(「 - 」)',並且這樣更容易處理。另外,OP提到他想要在_間破折號之間進行匹配。我不知道他的具體要求,但它可能會比OP想要的要多(包括第一個和最後一個項目)。 – vlaz

+0

斯普利特的作品!謝謝你! )=) –

1

我不很瞭解你的正則表達式的目的。假設你想一個DESGIN正則表達式遍歷的例子字符串被succesively asdasd2,bgbegebr23等,正則表達式將是這樣的:

\-?([^\-]*)\-? 

爲什麼?

  1. - :你必須用「 - 」代替「 - 」因爲連字符是正則表達式特殊字符,所以你要逃避它
  2. ? :連字符是可選的:在第一種情況下(asdasd2),它不存在。因此,執行它將省略這個第一個案例。
  3. ():分組捕捉所有的asdsas2和字母數字的東西。
  4. [^ - ]:除連字符外的所有內容。 @vks(。*?)的近似值我認爲也可以工作
  5. - :再次,連字符,但逃脫。我們不能忘記「?」最後是因爲示例字符串的最後一種情況,它不以連字符結尾。

而且不要忘記,如果你是在JavaScript中工作,你可能需要花葶反斜槓(),導致這樣的表達式:

\\-?[^\\-]*)\\-? 
+0

'連字符是正則表達式的特殊字符'不,它不是。而不是在那些位置 - 無論如何,它只在'[]'內部是特殊的,並且只有在它可以被解釋爲範圍時纔是。 '[0-9]'。但是,在方括號或_inside_之外,在開始/結束時,它永遠不會被認爲是特殊的。 「執行它會省略第一個案例」,你確定這不是OP想要的嗎?如在其中,他實際上可能會忽略第一個案例。 '如果你使用的是正則表達式,你可能需要修改反斜槓。你用字符串做,但是現在文字將是錯誤的。 – vlaz

+0

謝謝你,夥計,我不明白這是什麼意思 - >連字符,但是謝謝 –

+0

\\ - ?[^ \\ - ] *)\\ - ? - >這給了我一個error.idk爲什麼 –