2017-08-09 34 views
0

pdfTextという文字列でPDFファイルの全文を取得しました。文字列に長い単語の一部ではない部分文字列と部分文字列が含まれています(完全一致)

次は、pdfTextストリングで見つけられる/検索される部分文字列を含む配列をループしています。

サブストリングの1つはInvoiceです。

pdfTextと私が探している部分文字列はいずれも小文字に変換されます。

部分文字列のうち少なくとも1つがpdfTextにある場合、ブール値はtrueに設定されます。

ここでは、pdtTextに「...正味金額を請求する...」という例があります。これはテキスト内の「請求書」の唯一の変形です。 これはもちろん、私が使用すると真を返します

substring = "Invoice" ... pdfText.contains(substring.ToLower)です。

しかし、この場合はfalseを返す必要があります。私は正確なマッチだけを見つける必要があります。

別の例では、pdfTextに '...これは請求書です。お支払いください....正味金額請求書... 'ブール値は、最初の請求書照合のためにtrueに設定する必要がありますが、2回目の請求書による(非)照合では設定しないでください。

は、だから私は探していますどのような部分文字列が長い単語invoiced, invoice-process etc.の一部ではないことを、文字列pdfTextでサブInvoiceを見つけて確認することです。 invoice.Trueを返すはずです。

私はこれが可能であるべきだと思っていますが、私の頭の中でそれを現在包み込むことはできません。 regexを使う必要があるかもしれませんか?

答えて

1

は、この1つはhttps://stackoverflow.com/a/45587916/2326360

で@Medericが提案した、わずかな変化で、正規表現を使用していますProgramming->StringにあるUiPathアクティビティIs Matchのビルドを使用してください。

ループ内で、現在の設定で使用します。

enter image description here

正規表現は次のとおりです。substring+"[^a-zA-Z]"

私は、次の変数を宣言している:

enter image description here

2

RegExは良いアプローチです。

私はたった今RegExを始めましたが、これはうまくいくと思います。

正規表現:説明

(invoice)[^a-zA-Z] 

()

invoiceは、請求書の一致を探しキャプチャグループを作成します

[^a-zA-Z]をチェック全く存在しません-Zまたは

例後-Zの文字:


サンプル:これは

結果請求た:Noの結果を


サンプル:これは、請求書です。 結果:マッチ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 
+0

代わりに正規表現のマッチングを符号化する、あなたはUiPath活動を使用する必要があります。 –

+0

@NicolaiKrüger私はUiPathに全く慣れていないので、もしあなたがそれをお勧めするならば、それを書き留めておきます。 – Mederic

関連する問題