0

我在一个名为pdfText.

接下来,我将遍历一个包含要在pdfText-string 中找到/搜索的子字符串的数组。

子字符串之一是Invoice.

两者pdfText和我正在搜索的子字符串都转换为小写。

如果在 中找到至少一个子字符串pdfText,则布尔值设置为 true。

现在,我有一个示例,其中pdtText包含“...要开具发票的净额...”。这是文本中“发票”的唯一变体。如果我使用,这当然会返回 true

substring = "Invoice" ... pdfText.contains(substring.ToLower).

但在这种情况下,我需要它返回 false。我只需要找到完全匹配。

另一个例子,如果pdfText包含 '...这是一张发票。请支付....要开具发票的净金额...' 由于第一个发票匹配,布尔值应设置为 true,但第二个发票(非)匹配则不应设置为真。

所以我正在寻找的是在字符串Invoice中找到一个子字符串pdfText,并确保该子字符串不是较长单词的一部分invoiced, invoice-process etc.。请注意,那invoice.应该返回True.

我相信这应该是可能的,但目前还不能解决这个问题。我可能需要使用正则表达式?

4

2 回答 2

1

RegEx 将是一个很好的方法。

我不久前才开始使用 RegEx,但我认为这会很好。

正则表达式:

(invoice)[^a-zA-Z]

解释:

()创建捕获组

invoice查找发票的匹配项

[^a-zA-Z]检查之后没有来自 az 或 AZ 的字符

例子:


示例:这是发票

结果:无结果


示例:这是一张发票。结果:捕获组 1 上的匹配invoice.=invoice


执行:

Dim m As Match = Regex.Match(pdfText.ToLower,"(invoice)[^a-zA-Z]")
' If successful, write the group.
If (m.Success) Then
    Dim key As String = m.Groups(1).Value
    Console.WriteLine(key)
End If
于 2017-08-09T10:20:32.523 回答
1

这个使用了正则表达式,略有变化,由@Mederic 在https://stackoverflow.com/a/45587916/2326360提出

使用 UiPath 活动中的构建Is Match,位于Programming->String.

在您的循环中使用它,并使用当前设置。

在此处输入图像描述

正则表达式是:substring+"[^a-zA-Z]"

我已经声明了以下变量:

在此处输入图像描述

于 2017-08-09T10:53:42.007 回答