2

我想转换这个:

<g_n><![CDATA[zxcvzxcv, zx123vz123xc13vv150 , xxxx GSD 3363200 3Vo1asdf23l 4338D asdf]]></g_n>

到:

<g_n><![CDATA[xxxx GSD 3363200 3Vo1asdf23l 4338D asdf]]></g_n>

其中 xxxx 可以是 1 到 9999 之间的任何数字

到目前为止,这是我的正则表达式,我非常接近:

(?<=<g_n\><!\[CDATA\[).*(?<=[0-9] GSD)

我不知道如何让我的正则表达式在 GSD 之前找到任何数字。

4

3 回答 3

0

查看以下模式

<g_n><!\[CDATA\[\d{1,4} GSD(.|\s)*\]\]></g_n>
于 2013-06-01T05:55:31.697 回答
0

描述

假设您使用的是 notepad++ 6.3.3(notepad 5.xx 存在正则表达式搜索问题)。

您所需的输出看起来只是从输入字符串中减去前两块逗号分隔的数据。您可以使用它从输入字符串中查找和删除值

正则表达式:\b[a-z]{8}\b,\s\b[a-z0-9]{19}\b\s,\s\b 替换为:empty field

如果您想简单地捕获其他文本以便验证它正是您想要保留的内容,那么您可以使用这个正则表达式

正则表达式:(<g_n><!\[CDATA\[).*?,\s?(\d{1,4}\sGSD\s.*?<\/g_n>) 替换为$1$2

Example

First Option:

In this example I'm simply marking the text to show that it actually locates the string as expected

enter image description here

This example shows how I've popluated the search/replace dialog box enter image description here

Second Option:

The regex fills past the field width in the form

Regex: (<g_n><!\[CDATA\[).*?,\s?(\d{1,4}\sGSD\s.*?<\/g_n>)

enter image description here

于 2013-06-01T06:14:26.747 回答
0

Ok this will works for any expression holding CDATA\[ whats after last colon contains one or more digits together

   (.*)(CDATA\[)(.*)(,\s)([0-9]+)(.*)
   \1\2\5\6\7

Your number is hidden under \5 so give it a try and in replace put only \5 an see what happens (generally is good to use groups in parenthesis for fast extraction needed elements)

于 2013-06-01T06:20:55.547 回答