字符串包含子字符串和子字符串不是较长单词的一部分(完全匹配)
String contains substring and substring not part of longer word (exact match)
我在名为 pdfText
.
的字符串中捕获了 PDF 文件的全文
接下来,我循环遍历一个包含子字符串的数组 found/searched for in the pdfText
-string.
其中一个子字符串是 Invoice
。
pdfText
和我要搜索的子字符串都被转换为小写。
如果在 pdfText
中至少找到一个子字符串,则将布尔值设置为真。
现在,我有一个示例,其中 pdtText
包含“...要开票的净额...”。这是文本中 'invoice' 的唯一变体。
如果我使用
,这当然 return 是正确的
substring = "Invoice" ... pdfText.contains(substring.ToLower)
.
但在这种情况下,我需要它 return false。我只需要找到完全匹配项。
另一个例子,如果 pdfText
包含'...这是一张发票。请支付....要开发票的净金额...'布尔值应该设置为真,因为第一个发票匹配,而不是第二个发票(非)匹配。
所以我正在寻找的是在字符串 pdfText
中找到一个子字符串 Invoice
并确保该子字符串不是较长单词 invoiced, invoice-process etc.
的一部分。请注意,invoice.
应该 return True
.
我相信这应该是可能的,但我目前还不能全神贯注。
我可能需要使用正则表达式?
RegEx 将是一个很好的方法。
我不久前才开始使用 RegEx,但我认为这会很好用。
正则表达式:
(invoice)[^a-zA-Z]
解释:
()
创建捕获组
invoice
查找发票
的匹配项
[^a-zA-Z]
检查
之后没有来自 a-z 或 A-Z 的字符
示例:
示例:已开具发票
结果:无结果
样本:这是一张发票。
结果:匹配 invoice.
捕获组 1 = 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
这个使用由@Mederic 在
提出的 RegEx,稍作改动
使用 UiPath activity Is Match
中的构建,在 Programming->String
.
下找到
使用当前设置在循环中使用它。
正则表达式是:substring+"[^a-zA-Z]"
我声明了以下变量:
我在名为 pdfText
.
接下来,我循环遍历一个包含子字符串的数组 found/searched for in the pdfText
-string.
其中一个子字符串是 Invoice
。
pdfText
和我要搜索的子字符串都被转换为小写。
如果在 pdfText
中至少找到一个子字符串,则将布尔值设置为真。
现在,我有一个示例,其中 pdtText
包含“...要开票的净额...”。这是文本中 'invoice' 的唯一变体。
如果我使用
substring = "Invoice" ... pdfText.contains(substring.ToLower)
.
但在这种情况下,我需要它 return false。我只需要找到完全匹配项。
另一个例子,如果 pdfText
包含'...这是一张发票。请支付....要开发票的净金额...'布尔值应该设置为真,因为第一个发票匹配,而不是第二个发票(非)匹配。
所以我正在寻找的是在字符串 pdfText
中找到一个子字符串 Invoice
并确保该子字符串不是较长单词 invoiced, invoice-process etc.
的一部分。请注意,invoice.
应该 return True
.
我相信这应该是可能的,但我目前还不能全神贯注。 我可能需要使用正则表达式?
RegEx 将是一个很好的方法。
我不久前才开始使用 RegEx,但我认为这会很好用。
正则表达式:
(invoice)[^a-zA-Z]
解释:
()
创建捕获组
invoice
查找发票
[^a-zA-Z]
检查
示例:
示例:已开具发票
结果:无结果
样本:这是一张发票。
结果:匹配 invoice.
捕获组 1 = 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
这个使用由@Mederic 在
使用 UiPath activity Is Match
中的构建,在 Programming->String
.
使用当前设置在循环中使用它。
正则表达式是:substring+"[^a-zA-Z]"
我声明了以下变量: