2012-02-12 60 views
0

我試圖捕獲從以下字符串aa,bb,cc正則表達式來修剪的領先/ trailng逗號:,AA,BB,CC,

,aa,bb,cc, 
aa,bb,cc, 
,aa,bb,cc 
aa,bb,cc 

我的計劃是:

  1. 匹配的起始行錨點,或錨點後跟一個逗號
  2. 捕獲直到行尾錨點,或逗號後跟行尾錨點

我得到的最接近是:(?:^,|^)(.*)(?:$|,$),但包括捕獲組尾隨逗號:

,aa,bb,cc, -> aa,bb,cc, 
aa,bb,cc, -> aa,bb,cc, 
,aa,bb,cc -> aa,bb,cc 
aa,bb,cc -> aa,bb,cc 

爲什麼沒有工作,什麼是正確的解決方案?

+0

您可以使用您的語言的trim()方法(或同等方法)來做到這一點。當然,jQuery和PHP可以從字符串中獲取字符參數(例如'$ str = trim($ str,',')') – Joe 2012-02-12 21:48:56

回答

2

試試這個

^,*(?<trimmed>.*?),*$ 
+0

謝謝,明白了。對於其他人閱讀,「? '顯然是[命名組語法的.NET版本](http://www.regular-expressions.info/named.html)。 – 2012-02-12 22:05:11

+0

嘿,如果我已經認識到命名組語法,我會意識到我後來的答案與此完全相同。 :) – 2012-02-12 22:16:23

1

這似乎工作: ^,*(.*?),*$

的核心思想是懶惰的明星*?,因爲我想尾隨逗號(甚至多個後逗號,我假設)到與最後的,*匹配,而不是在括號內進行匹配。

+0

但是,我通常不會爲此使用RegEx。正如Joe提到的那樣,大多數語言已經具有某種「trim」功能。值得注意的不是JavaScript,除非你使用一個擁有它的框架。 – 2012-02-12 22:03:19