今天就刚刚学习了正则表达式的基础知识,并通过一些努力设法使ALMOST可以正常工作。
我从一本书中获得文档,我需要在项目符号中找到文章(a,an,the),而不是散文。
项目符号示例:
·Lorem ipsum lorem(XXX)Lorem·Lorem the ipsum·Lorem ipsum,lorem和
散文示例: (右) 主题写了 ipsum。 Lorem ipsum动词ipsum。
到目前为止,这或多或少地达到了目的:
$regexArticles = "^·\ [\w ,:;()+-=&·]*\b( the | a | an |The |An )\b.*$"
$articlecount = Select-String -Path $textfile -Pattern $regexArticles -AllMatches
"Article Count: " + $articlecount.Matches.Count
为了使它更具可读性,我将解释我的想法: 如果该行以项目符号开头,并且后面是任意数量的单词和字符:“,:()+-=&。;”,则在还有文章的情况下,请抓住它。
问题,在以下情况下,这行没有把握:
·Lorem ipsum lorem(XXX)Lorem·Lorem the ipsum·Lorem ipsum,lorem和
lorem lorem the lorem lorem
当我要获取的字符串包含这样的换行符时,如何保留这种逻辑?
如果有一种更简单的方法,也许只是排除所有包含句点的句子,那将是很好的(唯一的问题是有时那些项目符号会错误地包含句点)。
编辑
仅意识到在Sublime文本编辑器中“几乎”可用的功能在Powershell中根本不起作用。不论出于何种原因,即使此返回值在正则表达式中具有高品质的文本匹配,对于Powershell也不适用。
现在我知道为什么了。崇高可以处理项目符号字符,而外壳则不能,因此它被省略了,我没有注意到。现在,我只需要知道获取项目符号unicode并以相同方式传递它的正确方法。
答案 0 :(得分:1)
作为一个有点怪异的修补程序,因为我不知道如何检测中间的点字符(u00B7)| (d183),通过排除不希望找到的内容,我可以解决此问题。
"^[^\d^(^\s] *\b( the | a | an |The |An )\b.*$"
我不希望任何以数字开头的行,也不希望以开放括号开头的行。目前,这有效。不幸的是,对于其他正则表达式搜索,我将不得不解决此问题,以使我的应用程序有用。
在回答我最初的问题时,我顿悟了一下,我可以添加可选的\ n?考虑潜在的换行!最终表达式如下:
^[^\w\d\s(].*\n?\r*?.*\b( the | a | an |The |An )\b.*$