如何搜索出源代码中的所有字符串?

乘思者 2006-11-18 02:06:28
一段文本,这个文本本身就是源代码,
现在要搜索出代码中的所有表示字符串的代码,
如何搞?

我想了几个正则表达式,要么匹配不到,要么取得只是包含"符号的部分字符串。

这个问题很明确,应该有人能解答一下吧!
...全文
527 39 打赏 收藏 举报
写回复
39 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ForMyLove 2006-11-28
3.匹配"_string_" 和 "_String_"。_为空格,如果匹配,从它之后的第一个非空格字符开始读,直到遇到第一个空格。此时读取的内容为字符串变量

写个方法进行字符比较
  • 打赏
  • 举报
回复
乘思者 2006-11-24
dotNet版没人了,
一个能解决这里缺没人能解决的问题,我还是换版继续了。
  • 打赏
  • 举报
回复
ForMyLove 2006-11-23
我的思路:
1.去掉所有注释
2.把文本读到字符串了
3.匹配"_string_" 和 "_String_"。_为空格,如果匹配,从它之后的第一个非空格字符开始读,直到遇到第一个空格。此时读取的内容为字符串变量
4.go on....
  • 打赏
  • 举报
回复
乘思者 2006-11-23
呼唤高手达人中。。。
  • 打赏
  • 举报
回复
乘思者 2006-11-23
这个版没有高人了吗?老孟呢?
  • 打赏
  • 举报
回复
乘思者 2006-11-23
楼上你的思路不是重点
重点地问题在于,你到了第三步:
3.匹配"_string_" 和 "_String_"。
你怎么匹配?string 和 String 里本身就有空格,
你后面的逻辑是否还正确?

不要期望有什么约定,
软件就是要处理别人的源代码,
当然要能处理所有情况
(不过现在已经降低要求,就是源代码的字符串中没有回车换行符的时候)
  • 打赏
  • 举报
回复
风之影子 2006-11-22
看了你们发的贴子,才知道自己能吃几碗饭
  • 打赏
  • 举报
回复
乘思者 2006-11-22
难道这个问题真的这么无解?
具体点说明下,把下面的所有字符,注意时里面的所有字符,而不是把它作为C#代码输入(及不是使用变量ex的值输入),作为字符串输入,
---------------------------------------------------

string ex = "[@\"|\"](.*?)\"$" //起码要能检测出本身
+ @"""sfewfa""dsagfeaf""asfewf\""dfgeaf\23\fds3\" //第一种转义
+ "\"sf@\"\"\"a\"" //第二种转义
+ @"se@""" //特殊的混合情况
;
//这里整体的要能识别出来
---------------------------------------------------
然后使用正则表达式匹配,要求结果是:
---------------------------------------------------
"[@\"|\"](.*?)\"$"
@"""sfewfa""dsagfeaf""asfewf\""dfgeaf\23\fds3\"
"\"sf@\"\"\"a\""
@"se@"""
四个结果
现在大家能理解吗?
  • 打赏
  • 举报
回复
icuc88 2006-11-22
[@\"|\"](.*?)\"$
  • 打赏
  • 举报
回复
乘思者 2006-11-22
不是编译器,
是一个代码编辑器。
老大,不要岔开话题,帮我解决问题啊。

做出来的时候会放出来给大家使用的。
  • 打赏
  • 举报
回复
sdl2005lyx 2006-11-22
lz:是不是做编译器啊??
  • 打赏
  • 举报
回复
乘思者 2006-11-22
老大,你把握上面的拆拆看
  • 打赏
  • 举报
回复
maoliner 2006-11-22
按"拆分行得数组,判断数组元素是否两个"之间就把字符串拆分出来了。
  • 打赏
  • 举报
回复
cancerser 2006-11-22
"[@\"|\"](.*?)\"$" + @"""sfewfa""dsagfeaf""asfewf\""dfgeaf\23\fds3\" + "\"sf@\"\"\"a\""+ @"se@"""
------- NEXT MATCH -------//这明明是在一个 match里
下班了,答不了了
  • 打赏
  • 举报
回复
cancerser 2006-11-22
别用多行匹配模式;
还有那4个字符不是 一行写不下换行造成的啊?
  • 打赏
  • 举报
回复
乘思者 2006-11-22
还是配不了,
输入:
string ex = "[@\"|\"](.*?)\"$" + @"""sfewfa""dsagfeaf""asfewf\""dfgeaf\23\fds3\"
+ "\"sf@\"\"\"a\""+ @"se@""" +"dwef\"";
结果:
"\"sf@\"\"\"a\""+ @"se@""" +"dwef\""
------- NEXT MATCH -------
  • 打赏
  • 举报
回复
cancerser 2006-11-22
如果不考虑换行连接的话
\".*?(?=;)
这样应该是最好的
  • 打赏
  • 举报
回复
乘思者 2006-11-22
还有,你不需要考虑多行的情况,我可以在程序的其他部分避开这种情况,帮我写出在一行里所有的字符串就可以了。
  • 打赏
  • 举报
回复
乘思者 2006-11-22
上面那个就是没有匹配不出来,多个字符它算成一个了,变成
"[@\"|\"](.*?)\"$" + @"""sfewfa""dsagfeaf""asfewf\""dfgeaf\23\fds3\" + "\"sf@\"\"\"a\""+ @"se@"""

这是四个字符阿
  • 打赏
  • 举报
回复
cancerser 2006-11-22
\".*?(?=(;|\r|\n))
这样也许更完善些
我想不到一行有多个字符串的情况,就算有这个也应该能够匹配出来啊
能给个匹配不出来的例子不?
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Ajax
加入

5.2w+

社区成员

Web 开发 Ajax
社区管理员
  • Ajax
申请成为版主
帖子事件
创建了帖子
2006-11-18 02:06
社区公告
暂无公告