关于正则表达式的问题("(\{)(\r\n)*(.*)(\})"),精通者请进

lpt 2003-03-13 05:57:30
字符串内容
abc def ghi jkl mno
{abc def ghi jkl mno}
abc def ghi jkl mno
{abc def ghi jkl mno}

用正规表达式怎样把{}之外内容中的def替换成opq,jkl替换成mno?

查找{}之间内容的表达式可以用"(\{)(\r\n)*(.*)(\})"

...全文
78 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpt 2003-03-17
  • 打赏
  • 举报
回复
没有人回答
$searcharray = array("/([^\x80]*)asdf([^\x81]*)/i");
$replacearray = array("\\1凌萍\\2");

怎样替换全部
sh0cker 2003-03-15
  • 打赏
  • 举报
回复
正则表达式vc里面有吗?
我只在perl 和 php里面学过
flysundy 2003-03-14
  • 打赏
  • 举报
回复
mark
chenweihello 2003-03-14
  • 打赏
  • 举报
回复
关注
saucer 2003-03-14
  • 打赏
  • 举报
回复
try the following in IE6, although it may not work with IE5, also the regex makes no other assumptions, so if you have other kind of strings, the following may not work

<script>
function rep(s)
{
if (s.toLowerCase() == "def")
return "opq";
else if (s.toLowerCase() == "jkl")
return "mno";
else
return s;
}

s = "abc def ghi jkl mno \n{abc def ghi jkl mno} \nabc def ghi jkl mno \n{abc def ghi jkl mno}";
re = /\b(def|jkl)\b(?=[^{}]+\{)/gmi;
s = s.replace(re, function(){ return rep(arguments[0]);});
alert(s);
</script>
xuzuning 2003-03-14
  • 打赏
  • 举报
回复
<?php
$s = "abc def ghi jkl mno
{abc def ghi jkl mno}
abc def ghi jkl mno
{abc def ghi jkl mno}
";
$patterns = array(
"/([^{]*)def([^}]*)/",
"/([^{]*)jkl([^}]*)/"
);
$replace = array(
"\\1opg\\2",
"\\1mno\\2"
);
echo preg_replace($patterns,$replace,$s);
?>
lpt 2003-03-14
  • 打赏
  • 举报
回复
UP
lpt 2003-03-14
  • 打赏
  • 举报
回复
up
lpt 2003-03-14
  • 打赏
  • 举报
回复
up
lpt 2003-03-14
  • 打赏
  • 举报
回复
试了一下xuzuning(唠叨) 兄弟的,果然可以
<?php
$s = "abc def ghi jkl mno
{abc def ghi jkl mno}
abc def ghi jkl mno
{abc def ghi jkl mno}
";
$patterns = array(
"/([^{]*)def([^}]*)/",
"/([^{]*)jkl([^}]*)/"
);
$replace = array(
"\\1opg\\2",
"\\1mno\\2"
);
echo preg_replace($patterns,$replace,$s);
?>

要是分隔符{变成
,}变成
,那应该怎样变呢?

lpt 2003-03-13
  • 打赏
  • 举报
回复
under linux/unix
^[^{]def^[$}]/opq

我试了,不行。
用户 昵称 2003-03-13
  • 打赏
  • 举报
回复
under linux/unix
^[^{]def^[$}]/opq
lpt 2003-03-13
  • 打赏
  • 举报
回复
继续呀
lpt 2003-03-13
  • 打赏
  • 举报
回复
可以用来替换的,比如PHP中如下
$bbcode = preg_replace("/(\[)({)(])(\r\n)*(.*)(\[\/}\])/esiU", "\\2", $bbcode);

那我再说一次我的要求
字符串内容:
abc def ghi jkl mno
{abc def ghi jkl mno}
abc def ghi jkl mno
{abc def ghi jkl mno}

用正规表达式怎样把{}之外内容中的def替换成opq,jkl替换成mno?
替换的结果如下:
abc opq ghi mno mno
{abc def ghi jkl mno}
abc opq ghi mno mno
{abc def ghi jkl mno}
88dd 2003-03-13
  • 打赏
  • 举报
回复
CAtlRegEx

\n[^\{]*(\bdef\b)
9731boy 2003-03-13
  • 打赏
  • 举报
回复
这种表达式最烦!
怪不得程序员都有神经病!
GoAround 2003-03-13
  • 打赏
  • 举报
回复
不明白你的意思
正规表达式好像是用来定义文法的,不是用来替换什么东西的。你是想用Lex作吗?

拜托你说清楚点
chen_pin 2003-03-13
  • 打赏
  • 举报
回复
UP it
lpt 2003-03-13
  • 打赏
  • 举报
回复
牛人都说话呀
lpt 2003-03-13
  • 打赏
  • 举报
回复
不会搞不定吧!有没有够权威一点的人来说说。
加载更多回复(3)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧