的一部分,我有以下字符串正則表達式提取字符串
> ma1.andl_4_1000x20x20_k1=1,k2=2,k3=1.csv.
我需要提取部分k1=1,k2=2,k3=1
。我用R中的substr()
來提取。
substr(str, 23, nchar(str) - 4)
但是我正在尋找一個正則表達式來提取值。
的一部分,我有以下字符串正則表達式提取字符串
> ma1.andl_4_1000x20x20_k1=1,k2=2,k3=1.csv.
我需要提取部分k1=1,k2=2,k3=1
。我用R中的substr()
來提取。
substr(str, 23, nchar(str) - 4)
但是我正在尋找一個正則表達式來提取值。
如果您需要提取k1=1,k2=2,k3=1
的substr,如Jota指出的那樣,並且如果它是如此特定的字符串,那麼他的解決方案就是您想要的。
對於通用的解決方案,可以輕鬆捕獲kx=y,ka=b,kj=k
你需要Capture a Repeated Group,您的團隊我是kx=y,
其中x
是任何數字,y
是任何數字和,
。爲了簡單起見,我忽略了點號.
。
REGEX
((?:k\d{1,}=\d{1,}(?:,|\.)?)+)
BREAKDOWN
(
- 開口捕獲托架
(?:
- 打開非捕獲托架,這將被重複以捕獲整個圖案
k\d{1,}=\d{1,}
- 膽量,允許kx=y
(?:,|\.)
- 匹配逗號和最後一個點,以允許匹配的kx=y(?:,|.)
)+
整個圖案 - 緊密非捕獲支架,重複該模式,以捕獲整個組
)
- 關閉捕獲支架
...你就完成了。正則表達式將工作,但我根本不使用R
因此無法測試。
閱讀的鏈接,整個網站是正則表達式
@Jota我用正則表達式好友測試過,但不是在'R'中,我不知道你必須在'R' – gwillie
中轉義元字符謝謝@gwillie的詳細解釋。這真的很有幫助。是的,數字確實改變了。 – SriniShine
所以相當有價值的信息,它只是這一個字符串,你正在尋找一個確切的事情?如果你正在尋找確切的東西(這個問題不清楚),你難道不能簡單地瞄準你正在尋找的東西嗎?例如,爲什麼'gsub(「。+(k1 = 1,k2 = 2,k3 = 1)。+」,「\\ 1」,txt,perl = TRUE)'就足夠了? – Jota