Regex Powershell的正则表达式中的行返回帐户

Regex Powershell的正则表达式中的行返回帐户,regex,powershell,Regex,Powershell,今天刚刚学习了regex的基础知识,经过一些努力,终于拼凑出了一些几乎可以工作的东西 我有一本书中的文档,我需要在其中找到项目符号中的文章a,an,the,而不是散文 子弹样本: ·Lorem ipsum Lorem XXX Lorem·Lorem ipsum·Lorem ipsum,Lorem和 散文样本: 没错,洛勒姆写了《伊普苏姆》。Lorem ipsum动词ipsum 到目前为止,这或多或少起到了作用: $regexArticles = "^·\ [\w ,:;()+-=&·]*

今天刚刚学习了regex的基础知识,经过一些努力,终于拼凑出了一些几乎可以工作的东西

我有一本书中的文档,我需要在其中找到项目符号中的文章a,an,the,而不是散文

子弹样本:

·Lorem ipsum Lorem XXX Lorem·Lorem ipsum·Lorem ipsum,Lorem和

散文样本: 没错,洛勒姆写了《伊普苏姆》。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 ipsum·Lorem ipsum,Lorem和

洛雷姆·洛雷姆,洛雷姆·洛雷姆

当我想要获取的字符串包含这样的换行符时,如何保留这种逻辑

如果有一个更简单的方法,也许只是排除所有包含句号的句子,那就太好了。唯一的问题是,有时这些项目符号会错误地包含句号

编辑

刚刚意识到在我的sublime文本编辑器中几乎起作用的东西在Powershell中根本不起作用。无论出于何种原因,即使它返回正则表达式中带有升华文本的匹配项,但它不适用于Powershell


现在我知道为什么了。虽然升华可以处理子弹角色,但外壳不能,所以它被省略了,我没有注意到。现在我只需要知道如何正确地抓住子弹并以同样的方式传递它

由于我不知道如何检测中间点字符u00B7 | d183,因此我可以通过排除我不想找到的内容来解决这个问题

"^[^\d^(^\s] *\b( the | a | an |The |An )\b.*$"
我不想要任何以数字开头的行,也不想要以开括号开头的行。就目前而言,这是可行的。不幸的是,我将不得不解决这个问题,以使我的应用程序在其他正则表达式搜索中发挥作用

在回答我最初的问题时,我突然意识到我可以添加可选的\n?来解释潜在的断线!最终表达式如下所示:

^[^\w\d\s(].*\n?\r*?.*\b( the | a | an |The |An )\b.*$

也许,您可以利用Get Content$textfile-Raw来读取带有换行符的文件,然后使用类似于?i^·[\w,:;+=&·-]*\b | an?\b.*:?:\r?\n{2}.*?$这听起来很有效,而且在抓取正确的行时确实做到了我所需要的,但出于某种原因,它返回的计数为零。我认为这是我在理解Powershell中如何处理regex与Sublime等文本编辑器之间的一个差距。@WiktorStribiżew我想我发现我的问题在于unicode处理。您知道如何为这样的项目符号传递unicode吗?我正在查找,但有点挣扎。如果我弄明白了,我会告诉你的。图案开头的中间点属于\p{Po}类。你说的子弹是什么意思?该模式的实际需求是什么\ud183是톃 ‎D183[韩语音节]-你真的想要吗?当我说d时,我实际上指的是ASCII十进制值。如果我没弄错的话,这将获取ascii字符代码。[byte][char]'·',并返回183。我相信,当我运行pdftotext xpdf后读取的文件被保存出来时,它保存为unicode。当我打开文本文件时,它是一个不可读的字符。我在想,如果我更改将被解析的编码。[^\d|\]*=[\d|]-匹配除数字和|之外的任何字符。这就是你想要的吗?这只是一个缩写的等价物吗?我使用的竖线作为or,右括号作为组的结尾,所以我不一定关心右括号和竖线作为字符,因为它们永远不会是文档中一行的开始。[…]是一个字符库,您可以在其中定义字符,而不是组。A和|都是字面上的字符。啊,这是有道理的。那么[\d]和\d|大致相等吗?[\d]=?:\\\\\\d