在括号/括号内获取/拆分文本

时间:2012-04-25 20:37:58

标签: regex vb.net

只需要一个单词列表,例如:

gram (g)
kilogram (kg)
pound (lb)

只是想知道如何在括号内得到单词,例如在“gram(g)”中获取“g”并将其调暗为新的字符串。 可能使用正则表达式?

感谢。

3 个答案:

答案 0 :(得分:1)

使用拆分功能..

strArr  = str.Split("(")  ' splitting 'gram (g)' returns an array ["gram " , "g)"] index 0 and 1
strArr2 = strArr[1].Split(")") ' splitting 'g)' returns an array ["g " ..]

字符串在

strArr2[0]

修改

你希望getAbbrev和getAbbrev2是数组

Dim getAbbrev As String() = Str.Split("(") 
Dim getAbbrev2 as String() = getAbbrev[1].Split(")") 

要在不声明数组的情况下执行此操作

"gram (g)".Split("(")[1].Split(")")[0]

但那是不可读的

修改

你有一些非常微不足道的错误。我建议你先加强对对象和声明的理解。然后你可以看看调用方法。我宁愿让你明白而不是把它给你。重新阅读你的书或寻找基础教程。

Dim unit As String = 'make sure this is the actual string you are getting, not sure where you are supposed to get the string value from => ie grams (g)

Dim getAbbrev As String() = unit.Split("(") 'use unit not Str - Str does not exist
Dim getAbbrev2 As String() = getAbbrev[1].Split(")") 'As no as - case sensitive

表示最后一行参考getAbbrev2,而不是未知abbrev2

答案 1 :(得分:0)

正则表达式的乐趣(我真的不是这里的专家,但经过测试和工作)

Imports System.Text.RegularExpressions
.....

Dim charsToTrim() As Char = { "("c, ")"c }
Dim test as String = "gram (g)" + Environment.NewLine +   
         "kilogram (kg)" + Environment.NewLine +   
         "pound (lb)"  

Dim pattern as String = "\([a-zA-Z0-9]*\)"
Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase)
Dim m As Match = r.Match(test)
While(m.Success)
   System.Diagnostics.Debug.WriteLine("Match" + "=" + m.Value.ToString())
   Dim tempText as String = m.Value.ToString().Trim(charsToTrim)
   System.Diagnostics.Debug.WriteLine("String Trimmed" + "=" + tempText)
   m = m.NextMatch()
End While

答案 2 :(得分:0)

您可以在空格处拆分并从第二个标记中删除parens(通过用空字符串替换它们)。

正则表达式也是一种选择,非常简单,其模式是

\w+\s+\((\w+)\)

这意味着,一个词,然后至少一个空格,然后打开parens,然后在真正的正则表达式中你搜索一个单词,最后是一个结束语。内括号是捕获括号,这使得可以引用单位g,kg,lb。