我试图了解正则表达式的工作原理以及使用它的可能性。 所以我有一个txt文件,我试图搜索包含数字的8个字符串长字符串。现在我使用一个非常简单的选项:
clear
Get-ChildItem random.txt | Select-String -Pattern [0-9][a-z] | foreach {$_.line}
它有点奏效但我正在努力寻找更好的选择。 ATM需要很长时间才能读取左侧文本,因为它会写入整行,并且不会按长度过滤它们。
答案 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