高分 求一条正则表达式(在线等)

kevin 2009-08-19 12:19:59
if a = 1 and b = 1 and c = 1 then

替换成

if a == 1 and b == 1 and c == 1

请问RegEx 的怎么写?
...全文
120 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
HKCID 2009-08-21
晕!你的要求不明确别人怎么帮你? 起码你要提出什么条件"="才替换,什么条件下不能替换。

很奇怪!有些人都不清楚自己需要什么怎么能把问题解决。


[Quote=引用 10 楼 dreamtww 的回复:]
引用 9 楼 hkcid 的回复:
切!搞得这么复杂:

  单单这个句子"if a = 1 and b = 1 and c = 1 then" 就用这个简单的:
  :output = regex_replace(input, "=","==");

  如果还有其他内容,用这个。
  这样就简单了:output = regex_replace(input, "(? <!=)=(?!=)","==");
 
LZ拿分来。


此中场景,替换还是存在问题:
1、变量定义  如声明变量 int a = 1;  你的表达式替换结果是 int a == 1;
2、对于 != 或 >= 或 = <  你所提供的表达式替换出现了同样的错误。

此程序是需要实现翻译代码的功能, 所以既然简单, 请给出一个客观,正确的答案。
谢谢各位大侠。
[/Quote]
回复
kevin 2009-08-21
还有人知道如何解决吗? 分不够,我还可以再加, 请正则表达式高手进。
回复
kevin 2009-08-21
[Quote=引用 9 楼 hkcid 的回复:]
切!搞得这么复杂:

  单单这个句子"if a = 1 and b = 1 and c = 1 then" 就用这个简单的:
  :output = regex_replace(input, "=","==");

  如果还有其他内容,用这个。
  这样就简单了:output = regex_replace(input, "(? <!=)=(?!=)","==");
 
LZ拿分来。

[/Quote]
此中场景,替换还是存在问题:
1、变量定义 如声明变量 int a = 1; 你的表达式替换结果是 int a == 1;
2、对于 != 或 >= 或 =< 你所提供的表达式替换出现了同样的错误。

此程序是需要实现翻译代码的功能, 所以既然简单, 请给出一个客观,正确的答案。
谢谢各位大侠。
回复
currenttt 2009-08-19
LZ没有说明哪些是可变的哪些是不可变的,像你现在说的,根本就不需要正则表达式,只要字符串替换就好了
回复
donkey301 2009-08-19
没用过正则表达式,不过你可以到脚本语言或者linux版问一下应该很容易的。
回复
HKCID 2009-08-19
切!搞得这么复杂:

单单这个句子"if a = 1 and b = 1 and c = 1 then" 就用这个简单的:
:output = regex_replace(input, "=","==");

如果还有其他内容,用这个。
这样就简单了:output = regex_replace(input, "(?<!=)=(?!=)","==");

LZ拿分来。

[Quote=引用 7 楼 dreamtww 的回复:]
引用 6 楼 wuyi8808 的回复:
output = Regex.Replace(input, "(?i)(? <=if.*)=(?=.*then)", "==")


还是有点问题,
1、第三个等号就无法替换了,
2、在Delphi中, TPearlRegEx 的实现方式怎么写呢?

[/Quote]
回复
-空军- 2009-08-19
没用过TPearlRegEx,应该也是类似的吧。
回复
kevin 2009-08-19
[Quote=引用 6 楼 wuyi8808 的回复:]
output = Regex.Replace(input, "(?i)(? <=if.*)=(?=.*then)", "==")
[/Quote]

还是有点问题,
1、第三个等号就无法替换了,
2、在Delphi中, TPearlRegEx 的实现方式怎么写呢?
回复
-空军- 2009-08-19
output = Regex.Replace(input, "(?i)(?<=if.*)=(?=.*then)", "==")
回复
kevin 2009-08-19
[Quote=引用 4 楼 acrazer 的回复:]
so easy!

ctrl+H

直接替换!
[/Quote]
能否说明白点呢?
回复
KWHOK 2009-08-19
so easy!

ctrl+H

直接替换!
回复
kevin 2009-08-19
主要就是把 = 转换成 ==
另外, 只有在条件控制结构语句中替换。
可能存在变量赋值 int a = 1; 则 不需要替换
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告