我託利命名字段列表X是去1到10 例如(其它文本),我可能有:VB.NET正則表達式替換
flav2PGPct
我需要把它轉化爲
flav12PGPct
我需要通過10
使用VB.NET的Replace
功能用正則表達式替換1
與11
通過20
,但我不能獲得工作的權利。
任何人都可以幫忙嗎?
這是我已經試過:
(\.)flav*[1-9]
我不知道在替換框中地方...
我託利命名字段列表X是去1到10 例如(其它文本),我可能有:VB.NET正則表達式替換
flav2PGPct
我需要把它轉化爲
flav12PGPct
我需要通過10
使用VB.NET的Replace
功能用正則表達式替換1
與11
通過20
,但我不能獲得工作的權利。
任何人都可以幫忙嗎?
這是我已經試過:
(\.)flav*[1-9]
我不知道在替換框中地方...
我會使用2個正則表達式運行來獲得所需的結果,因爲它是不可能使用替代文字替代。
第一正則表達式將替換10
到20
和第二將處理1至9位:
Dim rx1to9 As Regex = New Regex("(?<=\D|^)[1-9](?=\D|$)") '1 - 9
Dim rx10 As Regex = New Regex("(?<=\D|^)10(?=\D|$)") '10
Dim str As String = "flav2PG10Pct101"
Dim result = rx10.Replace(str, "20")
result = rx1to9.Replace(result, "1$&")
Console.WriteLine(result)
參見IDEONE demo(輸出是flav12PG20Pct101
)
正則表達式的解釋:
(?<=\D|^)
- 一個積極的後臺臨時工牛逼確保沒有數字(\D
)或之前字符串的開始(^
)...[1-9]
- 從1
到9
單個數字(或者,在第二個正則表達式,10
匹配字符串10
)(?=\D|$)
- 確保數字後面沒有數字(\D
)或字符串結尾($
)的積極預測。如果你一定要檢查是否flav
出現在字符串中,你可以使用一個有點不同向後看:(?<=flav\D*|^)
,或者 - 如果空間不應該flav
和數字之間發生:(?<=flav[^\d\s]*|^)
。
的正則表達式與字符串而不是數字效果最好,所以一個簡單的方法是使用正則表達式來得到你想要的調整,然後串聯在字符串中計算出的部分字符串的部分:
Option Strict On
Option Infer On
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim re As New Regex("^flav([0-9]+)(.*)$")
Dim s = "flav1PGPct"
Dim t = ""
Dim m = re.Match(s)
If m.Success Then
t = CStr(Integer.Parse(m.Groups(1).Value) + 10)
t = "flav" & t & m.Groups(2).Value
End If
Console.WriteLine(t)
Console.ReadLine()
End Sub
End Module
對不起如果我不清楚的人,我沒有在代碼中使用它,而是在Visual Studio的搜索和替換框中實際替換代碼。 – Chris