簡體   English   中英

VB.Net正則表達式添加到字符串

[英]VB.Net regex add to string

我在VB.Net中正則表達式表達式方面苦苦掙扎。 由於我是regex的新手,所以我不知道該如何處理。

我的目標是建立一個計算器,並且我希望能夠計算正弦,余弦和棕褐色。 例如,我用於這些計算之一的輸入字符串可能是sin(93) + tan(2) + cos(364) + 5 * 3

我已使用MathParser進行計算,並且工作正常,但是默認情況下,MathParser使用弧度,並且我希望該選項切換為十進制。 我在窗體上有一個控件,當用戶選擇小數時,將boolean isRad為false,反之亦然。 為了在MathParser中使用小數,輸入字符串需要變為sin(93*[dec]) + tan(2*[dec]) + cos(364*[dec]) + 5 * 3

我試圖使用正則表達式查找輸入代碼中有正弦,cos或tan函數的位置。 我想出了(sin|cos|tan)\\(.?.?.?.?.?.?\\) ,但是我知道這不是一個出色的表達。 但是,即使它是完美的,我的問題還是如何將所需的*[rad]*[dec]放入字符串中。 我已經嘗試了以下方法,但是我只是得到(sin|cos|tan)\\(.?.?.?.?.?.?\\*[dec])作為輸出。

    Dim equationString As String = Regex.Replace("sin(93) + tan(2) + cos(364) + 5 * 3", "(sin|cos|tan)\(.?.?.?.?.?.?\)", "(sin|cos|tan) \ (.?.?.?.?.?.?*[" & Str_RadOrDec & "]\)")
    MsgBox(equationString)

您可以像這樣使用捕獲組。

Dim equationString As String = Regex.Replace("sin(93) + tan(2) + cos(364) + 5 * 3", "(sin|cos|tan)(\(.?.?.?.?.?.?)(\))", "$1$2" + "*[" & Str_RadOrDec & "]$3")

https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.match.groups?view=netframework-4.7.2

正則表達式模式可以包括子表達式,這些子表達式是通過將正則表達式模式的一部分括在圓括號中來定義的。 每個這樣的子表達式都組成一個組。 通過Groups屬性,可以訪問有關那些子表達式匹配項的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM