需要简单的正则表达式(正则表达式)来进行动态表达

时间:2015-10-19 13:50:28

标签: regex expression regular-language

我需要一个正则表达式来替换这个文本:

("{scriptid}_*0123_00000000_ABC-Description*");

使用以下文字:

("{scriptid}_*0123_00000000_ABC-Description*"));

或换句话说:*我必须添加第二个结束括号。

说明:

("{scriptid}_*0123_00000000_ABC-Description*");

("{scriptid}_4-digits_8-alphanumeric_X-alphanumeric-description");

我尝试了一些表达式,但它确实没有用。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

匹配所有以');'结尾的行的一般正则表达式(如果有尾随空格也匹配)可以是这样的:

s/\);\s*$/\)\);/

在线测试here

更新:添加右括号的通用正则表达式,仅匹配以lr_start_transaction开头的行:

s/^\s*(lr_start_transaction.*\))\s*;\s*$/\1\);/

在线测试here

无论如何,如果我们不讨论通用正则表达式,你还必须指定你正在编码的语言(因为每个正则表达式引擎都差别很小)。

还要考虑包含一些不必匹配的行。

答案 1 :(得分:1)

根据您的初始字符串,您可以选择它:

/(\("\{scriptid\}_[0-9]{4}_[a-z0-9]{8}_[-a-z0-9]+"\));$/i

$与行尾相匹配,i标记适用于不区分大小写

然后您可以使用$1);替换(为了简化替换,我将;从匹配中的捕获组中删除。

http://refiddle.com/refiddles/5625058d75622d65a01c0000