配置文件-请教各位大牛,正则表达式匹配结果的筛选问题

问题描述

请教各位大牛,正则表达式匹配结果的筛选问题

请教各位大牛,用正则表达式从配置文件里匹配IP地址“10.46.178.77”,现在需要将第一个匹配结果的IP修改为108.38.105.14,注释中的不修改。该怎么做?

        <IPvX>4</IPvX>
        <localIP>localhost</localIP>
        <seedcount>1</seedcount>
        <seedport>7000</seedport>
        <s0>10.46.178.77</s0>
        <!-- sample of 3 seeds -->
        <!--
        <seedcount>3</seedcount>
        <seedport>7000</seedport>
        <s0>10.46.178.77</s0>
        <s1>10.46.178.78</s1>
        <s2>10.46.178.79</s2>
        -->

解决方案

用这样的正则表达式,会把匹配到的所有结果都修改掉,会误改不需要改的配置
ip=108.38.105.14
sed -i "s/10.46.178.77/$ip/g" $link_config_xml

解决方案二:

不知道你在什么环境下用的正则,正则一般替换的函数replace都有一个参数是限制替换次数的
比如php:
$p = /[b]/
$r = "a"
echo preg_replace($p,$r,"bbbb",1) 这样就只替换第一个b了

解决方案三:

不知道你什么语言,以下代码在C#下是测试通过的

 str=Regex.Replace(str,@"(?s)(?<!<!--[^-]*)d+.d+.d+.d+(?![^-]*-->)","108.38.105.14");

解决方案四:

像这种需求,你用libxml来解析xml,然后xpath获取这个tag的一个链表,然后取第一个元素来修改就可以满足你的需求

这比正则表达式更清晰,准确,也不容易出错。

时间: 2025-01-01 23:43:34

配置文件-请教各位大牛,正则表达式匹配结果的筛选问题的相关文章

正则表达式匹配URL

问题描述 请教一个javascript正则表达式匹配URLURL格式如下:http://11.12.13.14:9091/FileServer/fileupload?path=/aa/bb/cc/backup/log/test.logrtsp://20.0.1.15/88888888/16/20121215/268435462/268435462.ts协议也可能是:https | http | ftp | rtsp | igmp | file | rtspt | rtspu1.主要是要匹配URL

正则表达式匹配{&amp;amp;quot;message&amp;amp;quot;:&amp;amp;quot;操作成功&amp;amp;quot;,&amp;amp;quot;balance&amp;amp;quot;:[110,0],&amp;amp;quot;msgcode&amp;amp;quot;:1}

问题描述 我想用正则表达式匹配[110,0]方括号里面的数值这个110,跟0没次都是不一样的,我想匹配110这个位置的数值,不知道怎么做,请教高手 解决方案 解决方案二:"balance":[(d+),解决方案三:(?<=[)d+解决方案四:(?<=[)d+(?=,)解决方案五:[(?<1>d+),(?<2>d+)]用分组的方式给你定的测试通过解决方案六: 解决方案七:谢谢各位兄弟了,还有varurl="http://imprest.won

正则表达式匹配标签问题

问题描述 正则表达式匹配标签问题 <section> //此处为任何内容,会动态改变 </section> <table> //此处也为任何内容,会动态改变 </table> 以上内容以字符串形式复制给了变量str,我需要用正则从str中分别提取<section></section>和<table></table>之间的内容(包括section和table)赋值给str1和str2,我知道一般的正则方法,现在问

perl正则表达式匹配问题

问题描述 perl正则表达式匹配问题 10C 本人小白看不懂前辈写的perl正则表达式 m/=$/ 和 m/[=]/区别,这个要匹配的是哪两种情况 解决方案 后面的表达式是不是不完整 解决方案二: 正则表达式匹配问题perl正则表达式匹配正则表达式之匹配顺序问题 解决方案三: 本人小白看不懂前辈写的perl正则表达式 m/=$/ 和 m/[=]/区别,这个要匹配的是哪两种情况 前一个是匹配一个=号结尾的行,例如 abcdkjalsjfajsflajsfl=而后一个是匹配文本行中 包含 = 号的,

java正则表达式匹配斜杠

在正则表达式里面匹配一个斜杠,需要用4个斜杠: Java代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String textString = new String ("\\\&q

实现正则表达式匹配任意字符解析

我们如何实现正则表达式匹配任意字符的效果呢?这个过程需要使用什么呢?具体的操作需要注意那些方面呢?那么现在我们就来揭开这神秘的一面: 实现正则表达式匹配任意字符的真相: 使用"."匹配几乎任意字符.在正则表达式中,"."是最常用的符号之一.不幸的是,它也是最容易被误用的符号之一. "."匹配一个单个的字符而不用关心被匹配的字符是什么.唯一的例外是新行符.在本教程中谈到的引擎,缺省情况下都是不匹配新行符的.因此在缺省情况下,"."

正则表达式匹配字符串实现详解

使用正则表达式最常用的是考虑实现正则表达式匹配的判断,在实际工作中经常会遇到什么需要匹配的字符串操作呢?下面我们来看看实现正则表达式匹配字符串的操作实例. 正则表达式匹配字符串实例: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字.26个英文字母或者下划线组成

Shell脚本中通过正则表达式匹配IP地址

  这篇文章主要介绍了Shell脚本中通过正则表达式匹配IP地址,本文直接给出实现代码,需要的朋友可以参考下 在运维场景下,我们经常需要在服务器上用正则表达式来匹配IP地址. shell和其它编程语言一样,也可以使用正则分组捕获,不过不能使用 $1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]} 下面以ip="121.0.2.2"为例,shell脚本代码如下(当然,你要做成更通用交互

js 正则表达式-求个正则表达式 匹配000000到820665或者821000到999999的六位数字

问题描述 求个正则表达式 匹配000000到820665或者821000到999999的六位数字 求个正则表达式 匹配000000到820665或者821000到999999的六位数字 解决方案 ([012345679]d{5})|(8[013456789]d{4})|(82[1-9]d{3})|(820[0-5]d{2})|(8206[0-5]d)|(82066[0-5]) 解决方案二: 转为数字对比不就好了,干嘛要正则? function isCorrent(v) { if (!/^d{6}