- 私VBA正規表現にかなり新しいが、このstackoverflow threadのおかげで、VBA正規表現は、複数のパターンをidentifiying - エクセル
を、私はそれを取得しています。私は問題があり、誰かが助けてくれることを願っています。 Excelの行1では、都市/国の属性が異なる複数の文字列があります。例:私は今持っているしたい何
A1: "/flights/munich/newyork"
A2: "flights/munich/usa"
A3: "flights/usa/germany"
...
、正規表現でこれらの文字列かかわらなり、正規表現が満たされた場合に分類値を促しVBAです。例:今
A1: "/flights/munich/new-york" categorises as "city to city"
A2: "flights/munich/usa" categorises as "city to country"
A3: "flights/usa/germany" categorises as "country to country"
、私は私に、「都市の都市へ」のカテゴリを返しますコードを持っているが、私は複数のパターンを処理し、対応を返すコードを取得する人を見つけ出すcan't出力文字列。要するに
、このようなロジックが必要とされている:
A1は、正規表現".*/munich/new-york"
含まれている場合、A1は、正規表現".*/munich/usa"
含まれている場合は、次にように出力文字列"city to country"
を返すと、出力文字列"city to city"
を返します。
これは、VBAで複数のパターンを持つ複数のif文をどのように処理するのかとは関係がありますが、わかりません。
これは私のコードが現在どのように表示されているかを示しています。
Function simpleCellRegex(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = "(munich|berlin|new-york|porto|copenhagen|moscow)/(munich|berlin|new-york|porto|copenhagen|moscow)"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = "CITY TO CITY"
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
simpleCellRegex = regEx.Replace(strInput, strReplace)
Else
simpleCellRegex = "NO MATCH FOUND"
End If
End If
End Function
**この正規表現**を実行しようとしていますか?あなたが3つの表現でそれをやっていることを理解したように思えます。すべてのRegExの返品は、1つの一致が発生したかどうか、そして何が何であるかということです。 – dbmitch
regexを使用する説得力のある理由はありますか?特に、あなたの文字列には十分に確立されたセパレータがあるため、迅速なトークン抽出機能はすぐに機能します。 – PeterT
@dbmitchいいえ、文字列には複数の組み合わせが含まれているため、複数のRegex式が存在します。ピーター、特別な理由はない - 私はあなたの提案を調べるべきだと思う。ありがとう! –