标题: [文本处理] [已解决]批处理findstr命令中正则表达式\<xyz的理解 [打印本页]
作者: januapr 时间: 2009-8-21 22:42 标题: [已解决]批处理findstr命令中正则表达式\<xyz的理解
文件123.txt内容如下:-
- abc123
- icq abc 456
- eeeeabc
- jjjjabctttt
- 123456:abc
- ;abc
- >abc
- a ,abc
- 123 $abc
- %abc
复制代码
在使用findstr "\<abc" 123.txt命令时,得到以下结果:- D:\>findstr "\<abc" 123.txt
- abc123
- icq abc 456
- 123456:abc
- ;abc
- >abc
- a ,abc
- 123 $abc
- %abc
复制代码
本来是想要查找以abc为前缀的字符串的行 abc123 和 icq abc 456
结果却得出了上面的结果,很难理解\<xyz这表达式的意思!
在此请教一下findstr命令中\<xyz的理解。
[ 本帖最后由 januapr 于 2009-8-23 13:28 编辑 ]
作者: 基拉freedom 时间: 2009-8-21 23:32
因为所有行都有abc....
用\<xyz\> 应该可以
作者: januapr 时间: 2009-8-21 23:43 标题: 回复 2楼 的帖子
用\<abc\>这表达式还是不能解决!
作者: Seter 时间: 2009-8-22 12:54
错了
/<是字的开始
用^abc即可
findstr "^abc" x.y
作者: zqz0012005 时间: 2009-8-22 13:21
不要照抄帮助。
新手正是因为看不懂帮助中那个鸟“字”才有疑问。
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束
英文帮助如下:
\<xyz Word position: beginning of word
xyz\> Word position: end of word
word应该翻译成“单词”才合适。(xyz指代某个代词)
同时建立楼主百度一下正则表达式,以便于理解。
PS:
个人认为,findstr将正则表达式中匹配单词边界的\b,强行分成左边界\<和右边界\>,实在没什么意义。
因为\b所放的位置就能确定左右边界。
\bhello,\b在左边,当然是左边界(单词开始);hello\b,\b在右边,当然是右边界(单词结束)。\bhello\b,就是匹配单词hello。在findstr中硬要写成\<hello\>,烦不烦啊。。
作者: januapr 时间: 2009-8-22 16:15 标题: 回复 5楼 的帖子
还是没理解!
对于顶楼123.txt的文件,如何查找出以abc为前缀的第一行abc123 和第二行icq abc 456 ?
呵呵,不要说本人罗嗦。
只是想真心求教于各位朋友!还望大家指点一下!
在此先说声谢谢了!
作者: tireless 时间: 2009-8-22 16:50
复制代码
作者: zqz0012005 时间: 2009-8-22 18:22 标题: 回复 6楼 的帖子
不知道你的理解能力。。。
“对于顶楼123.txt的文件,如何查找出以abc为前缀的第一行abc123 和第二行icq abc 456 ?”
你这个说法有点矛盾吧?
abc123满足条件,但“icq abc 456”如何理解?
作者: zqz0012005 时间: 2009-8-22 19:35
不好意思,5楼有个字打错了:代词-->单词
你可是这个意思?- findstr /r "[ ]*abc" 123.txt
复制代码
作者: januapr 时间: 2009-8-22 19:38 标题: 回复 8楼 的帖子
对于第二行:icq abc 456
abc前后有空格隔开,所以独立成一个单词,
这个单词本身就是abc,
所以个人理解为这个单词的前缀就是它本身abc
同理,个人理解这个单词的后缀也它本身abc
呵呵,不知是不是我的解理错了呢?
作者: januapr 时间: 2009-8-22 21:18 标题: 回复 7楼 的帖子
先谢谢7楼的朋友帮助解决了上面提到的问题:想要查找以abc为前缀的字符串的行 abc123 和 icq abc 456
但是本人还是不怎么理解findstr命令中\<xyz表达式的意思!
如果按英文帮助:
\<xyz Word position: beginning of word
xyz\> Word position: end of word
word应该翻译成“单词”才合适。(xyz指代某个单词)
那么\<abc 应该理解为查找一个以abc为前缀的“单词”,这里我有没有理解错呢?
如果这一点没有错的话,那么在使用findstr "\<abc" 123.txt时,下面这几行怎么都给找出来了?
;abc
>abc
a ,abc
%abc
这几行的前缀并不是abc呀,而是一些符号为前缀呀?怎么理解?
难道系统默认的是把符号为前缀的先略去,然后再根据符号后面的“单词”判断?
作者: zqz0012005 时间: 2009-8-23 11:07
判断一个单词是以标点符号为界的,并不只是以空格。
这应该很好理解,跟人脑的判断类似。
作者: januapr 时间: 2009-8-23 13:24 标题: 回复 12楼 的帖子
如果是以标点符号为界的,这个就能解释上面的例子了,
谢谢版主了!!
作者: canyuexiaolang 时间: 2009-8-25 11:04
问一下findstr命令是干嘛的
作者: januapr 时间: 2009-8-25 12:28 标题: 回复 14楼 的帖子
findstr命令主要是用于查找文本内容信息的,
建议多点动手在本论坛或者百度搜索一下!
呵呵!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |