Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在正则表达式中包含2个单词,结果必须仅基于这2个单词VB.NET_Regex_Vb.net_Visual Studio 2010_Pdf - Fatal编程技术网

Regex 如何在正则表达式中包含2个单词,结果必须仅基于这2个单词VB.NET

Regex 如何在正则表达式中包含2个单词,结果必须仅基于这2个单词VB.NET,regex,vb.net,visual-studio-2010,pdf,Regex,Vb.net,Visual Studio 2010,Pdf,我想知道如何在正则表达式中只包含2个或更多关键字。结尾结果应该只显示定义的单词,而不是一个单词 我现在有多个关键字,但我希望它使用两个字,而不是任何一个其他 例如: Dim pattern As String = "(?i)[\t ](?<w>((arma)|(crapo))[a-z0-9]*)[\t ]" Dim模式为String=“(?i)[\t](?((arma)|(crapo))[a-z0-9]*)[\t]” 现在,通过包含“arma”或“crapo”,代码可以正常工作。

我想知道如何在正则表达式中只包含2个或更多关键字。结尾结果应该只显示定义的单词,而不是一个单词

我现在有多个关键字,但我希望它使用两个字,而不是任何一个其他

例如:

Dim pattern As String = "(?i)[\t ](?<w>((arma)|(crapo))[a-z0-9]*)[\t ]"
Dim模式为String=“(?i)[\t](?((arma)|(crapo))[a-z0-9]*)[\t]”
现在,通过包含“arma”或“crapo”,代码可以正常工作。我只希望它包括“arma”和“crapo”,否则不会显示任何结果

处理在PDF文档中查找某些关键字的问题,我只希望在PDF文档同时包含“arma”和“crapo”时显示结果(显示“arma”或“crapo”的结果很好),我希望看到基于“arma”和“crapo”的结果

对不起,听起来这么重复

编辑:这是我的代码。请阅读评论

Dim filesz() As String = GetPatternedFiles("c:\temp\", New String() {"tes*.pdf", "fes*.pdf", "Bas*.pdf"})

'The getpatterenedfiles is a function"  also gettextfromPDF is another function.
    For Each s As String In filesz

        Dim thetext As String = Nothing

        Dim pattern As String = "(?i)[\t ](?<w>(crapo)|(arma)[a-z0-9]*)[\t ]"

        thetext = GetTextFromPDF(s)

            For Each m As Match In Regex.Matches(thetext, pattern)

                ListBox1.Items.Add(s)
            Next

    Next
Dim filesz()As String=GetPatternedFiles(“c:\temp\”,新字符串(){“tes*.pdf”、“fes*.pdf”、“Bas*.pdf”})
“GetPatterEndFiles是一个函数”gettextfromPDF也是另一个函数。
对于文件Z中的每个字符串
将文本变暗为字符串=无
尺寸模式为String=“(?i)[\t](?(crapo)|(arma)[a-z0-9]*)[\t]”
thetext=GetTextFromPDF(s)
对于Regex.Matches中的每个m As匹配(文本、模式)
ListBox1.Items.Add(s)
下一个
下一个

您可以使用此正则表达式:

\barma\b.*?\bcrapo\b|\bcrapo\b.*?\barma\b

这个想法是匹配
arma
which
crapo
crapo
which
arma
并使用单词边界来避免像业力这样的单词

然而,如果你想按照你在评论中的要求匹配因果报应或恶作剧,你可以使用:

arma.*?crapo|crapo.*?arma

你能给出输入和期望输出的例子吗?好的,我不知道你的意思,但是,我有几百个PDF文件,我只想要包含这两个关键字“arma”和“crapo”的PDF文件列表,现在代码可以很好地包含“arma”或“crapo”。但是我只想要一个PDF文件同时包含“arma”和“crapo”的结果.这似乎是一个理想的解决方案,但我的意图是捕捉“因果报应”和“恶作剧”这样的词在PDF中。那么,如果我删除/b,会删除边界吗?@TuckingFypo是的,如果你想捕获karma或crapotos,那么就删除单词边界
\b
。我会用该fede更新答案,所以上面的修复应该如解释的那样工作?…请记住,代码一次只处理一个PDF,它应该只给我如果这两个单词存在于该PDF文件中,则返回结果。如果该PDF文件中只存在一个单词,则我不希望对其进行处理。如果您确认,请提前感谢。此外,如果关键字为大写或小写,则我希望忽略它。我将尝试将您的代码实现到我的上述代码中,因为我的代码可以正常工作。@TucKimfPyo只需添加密钥不敏感标志。检查链接。BTW,如果您的问题得到答复,您可以考虑将其标记为“解析”: