毫無疑問,有一個更好的方法來做到這一點,但這是我的需求需要我這樣做的方式。正則表達式在文本中找到參數
我爲我的web應用程序創建了一個搜索表單。我想使用基於標記的搜索。所以我使用正則表達式來使它工作。
所以我有一個搜索字符串:'c:john customer:15478' 正則表達式需要找到標籤(c :)和參數(john),放下標籤並給我參數 - 它需要爲標籤的所有實例及其參數執行此操作。正則表達式我接近,但它不能正確工作。它不會抓住每個參數,也不會以一致的方式放置標籤。所以這個問題:爲了達到正確的結果,我的正則表達式需要修正哪些問題?
目前它找到第一個標籤,抓住它的參數,以及其後的所有其他東西。我需要它在找到一個參數後停止比賽。即在上面的情況下,它將匹配約翰客戶:15478
也許一個更好的問題是如何使VB的正則表達式返回第一個冒號和下一個標記(其後是另一個冒號)的開始之間的一切或否則停止匹配在下一個標籤的開始?
正則表達式:
(?<=({0}({1})??:)+?)(\S+\s*\S*)(?=\s+?\b\w+:.+?)??
的{0}
和{1}
表示使用字符串的String.format電話,說客戶(但它可以是任何東西),定義標籤。 {0}
是第一個字符,{1}
是字符的其餘部分。這個正則表達式將匹配標籤後面的任何內容,包括另一個標籤及其參數(如果存在)。因此,對於字符串
"c:5401 4664 c:john smith p:joam d:domain.com p:1548 c:215-548-5487 d:""192.168.0.1"""
的比賽將是
'5401 4664, john smith, 215-548-5487 d:"192.168.0.1"'
'domain.com p:1548, "192.168.0.1"'
'joam d:domain.com, 1548 c:215-548-5487'
給我定義的標記。正則表達式無法在下一個標記開始時停止匹配。
你試過了:http://www.regexr.com/? – SQLMason
是的,它是基於JavaScript的。這是一個VB應用程序。 –