[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理findstr命令中正则表达式\<xyz的理解

文件123.txt内容如下:
  1. abc123
  2. icq abc 456
  3. eeeeabc
  4. jjjjabctttt
  5. 123456:abc
  6. ;abc
  7. >abc
  8.   a ,abc
  9. 123 $abc
  10. %abc
复制代码
在使用findstr "\<abc" 123.txt命令时,得到以下结果:
  1. D:\>findstr "\<abc" 123.txt
  2. abc123
  3. icq abc 456
  4. 123456:abc
  5. ;abc
  6. >abc
  7.   a ,abc
  8. 123 $abc
  9. %abc
复制代码
本来是想要查找以abc为前缀的字符串的行 abc123  和  icq abc 456
结果却得出了上面的结果,很难理解\<xyz这表达式的意思!
在此请教一下findstr命令中\<xyz的理解。

[ 本帖最后由 januapr 于 2009-8-23 13:28 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

因为所有行都有abc....
用\<xyz\> 应该可以
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

回复 2楼 的帖子

用\<abc\>这表达式还是不能解决!

TOP

错了
/<是字的开始
用^abc即可
findstr "^abc" x.y

TOP

不要照抄帮助。
新手正是因为看不懂帮助中那个鸟“字”才有疑问。
\<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\>,烦不烦啊。。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 5楼 的帖子

还是没理解!
对于顶楼123.txt的文件,如何查找出以abc为前缀的第一行abc123  和第二行icq abc 456 ?
呵呵,不要说本人罗嗦。
只是想真心求教于各位朋友!还望大家指点一下!
在此先说声谢谢了!

TOP

  1. findstr "\<abc." 123.txt
复制代码

TOP

回复 6楼 的帖子

不知道你的理解能力。。。

“对于顶楼123.txt的文件,如何查找出以abc为前缀的第一行abc123  和第二行icq abc 456 ?”
你这个说法有点矛盾吧?
abc123满足条件,但“icq abc 456”如何理解?
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

不好意思,5楼有个字打错了:代词-->单词

你可是这个意思?
  1. findstr /r "[ ]*abc" 123.txt
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 8楼 的帖子

对于第二行:icq abc 456
abc前后有空格隔开,所以独立成一个单词,
这个单词本身就是abc,
所以个人理解为这个单词的前缀就是它本身abc
同理,个人理解这个单词的后缀也它本身abc
呵呵,不知是不是我的解理错了呢?

TOP

回复 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呀,而是一些符号为前缀呀?怎么理解?
难道系统默认的是把符号为前缀的先略去,然后再根据符号后面的“单词”判断?

TOP

判断一个单词是以标点符号为界的,并不只是以空格。
这应该很好理解,跟人脑的判断类似。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 12楼 的帖子

如果是以标点符号为界的,这个就能解释上面的例子了,
谢谢版主了!!

TOP

问一下findstr命令是干嘛的

TOP

回复 14楼 的帖子

findstr命令主要是用于查找文本内容信息的,
建议多点动手在本论坛或者百度搜索一下!
呵呵!

TOP

返回列表