文本文件搜索匹配字符串正则表达式

时间:2016-03-29 15:02:32

标签: powershell text scripting

我试图了解正则表达式的工作原理以及使用它的可能性。 所以我有一个txt文件,我试图搜索包含数字的8个字符串长字符串。现在我使用一个非常简单的选项:

clear
Get-ChildItem random.txt | Select-String -Pattern [0-9][a-z] | foreach {$_.line}

它有点奏效但我正在努力寻找更好的选择。 ATM需要很长时间才能读取左侧文本,因为它会写入整行,并且不会按长度过滤它们。

3 个答案:

答案 0 :(得分:1)

模式[0-9][a-z]匹配一个数字后跟一个字母。如果要匹配8个字符的序列,请使用.{8}。正则表达式中的点匹配除换行符之外的任何字符。大括号中的数字与前面的表达式匹配给定的次数。

如果您想匹配非空白字符,请使用\S代替.。如果您只想匹配数字和字母,请使用[0-9a-z](字符类)而不是.

如需更全面的介绍,请查找教程。主题方式过于复杂,无法通过SO上的单个答案进行报道。

答案 1 :(得分:1)

您可以使用lookahead断言字符串包含至少1位数,然后指定匹配的长度,最后用^(字符串的开头)和{{1}锚定它}(字符串结尾)如果字符串在它自己的一行上,或$(字边界),如果它是\b文档的一部分,正如你的评论似乎暗示的那样:

HTML

答案 2 :(得分:0)

您目前正在搜索的是一个数字,范围从0到9,后跟一个小写字母,范围是a-z。

例如,

将匹配任何仅包含字母数字字符的8个字符串长字符串。

\w{8}

我经常忘记一些正则表达式类是什么,它可能对你作为一种学习工具很有用,但我用它作为参考点:http://regexr.com/

它还可以通过文本字段验证您在线内输入的内容,这样您就可以了解自己的工作是否有效。

如果你需要更多的教程而不是参考,我发现这非常有用:regexone.com

相关问题