繁体   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