2016-07-28 131 views
0

我想創建一個模式匹配和替換使用正則表達式的單詞。下面正則表達式匹配一個字符串,並替換

<mycomponent id="Myvalue1.Myvalue2.013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9" 
<mycomponent id="Myvalue3.Myvalue4.013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9" 
<mycomponent id="Myvalue5.Myvalue6.013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9" 
<mycomponent id="Myvalue7.Myvalue8.013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9" 

我的字符串等給出我想要的預期效果是看起來像

<mycomponent id="Myvalue1.Myvalue2" 
<mycomponent id="Myvalue3.Myvalue4" 
<mycomponent id="Myvalue5.Myvalue6" 
<mycomponent id="Myvalue7.Myvalue8" 

我不能使用的replaceAll .013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9空,因爲有是仍在使用GUID

我可以使用下面的模式匹配字符串的一些功能

<mycomponent Id=*.*.013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9 

但是,當我用下面的圖案更換它不工作

<mycomponent Id=*.*. 
+0

在你的情況下使用什麼編程語言? – RomanPerekhrest

+0

我想用記事本++替換值。 – TVSuser1654136

回答

1

這種模式並沒有真正做的事意圖,因爲你還沒有逃脫點。這只是一個巧合。爲了匹配你想要的,應該使用下面的正則表達式。

​​

此正則表達式匹配<mycomponent id=,然後一個點,它符合一個點,然後點之前的字符,然後最小量,然後再字符的最小量滿足另一點之前。


如果您想repalce,用這個正則表達式場

(<mycomponent id=".*?\..*?)\.\S+ 

這對於替換場

$1" 
+0

並替換我應該使用的正則表達式 – TVSuser1654136

+0

@user您想要替換什麼,以及用什麼? – nicael

+0

它在問題中提到。請您看看那個 – TVSuser1654136

1

用下面的辦法:

  • 正則表達式字段(搜索):

    (<mycomponent id=.+\..+)(?:\.)013D0E13-BF5F-4D0F-AAFA-FA4B120DE3E9(.+) 
    
  • 更換到:

    $1$2 
    

(上Notepad++測試)

+0

它正在工作。 – TVSuser1654136

+0

你還沒有在GUID *後面提供包含*的東西的實際字符串。添加一些示例 – RomanPerekhrest

+0

我的完整字符串就像 TVSuser1654136