用于匹配字符串和替换的正则表达式

时间:2016-07-28 20:09:41

标签: regex

我正在尝试使用正则表达式创建匹配和替换单词的模式。 我的字符串如下所示

<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=*.*.

2 个答案:

答案 0 :(得分:1)

这种模式并没有真正做到预期的事情,因为你没有逃过现实。这只是一个巧合。为了匹配您想要的,应使用以下正则表达式。

<mycomponent id=.*?\..*?\.

这个正则表达式匹配<mycomponent id=,然后是一个点,然后匹配一个点之前的最小量的字符,然后是一个点,然后再遇到另一个点之前的最小量的字符。

如果您想要重新生成,请将其用于正则表达式字段

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

这是替换字段

$1"

答案 1 :(得分:1)

Use the following approach:

  • regexp field(search for):

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

    $1$2
    

(tested on Notepad++)