RegEx获取选项卡之间的子字符串并包含一个特殊字符

时间:2014-03-07 20:16:13

标签: c# .net regex vb.net

我在这里遇到一个简单的RegExp问题。 我想从特定字符串中检索所有使用以下规则完成的子字符串: 1.值在TAB之间。 2.还包括双引号。

我该怎么做?

我找到了获取TAB之间值的方法,但我无法弄清楚如何包含双引号验证。

'get the text from clipboard
Dim stringInClipboard As String = ClipboardGet()

Dim vRegExMatch As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(stringInClipboard, "\t[^\t\\]*(?:\\.[^\t\\]*)*\t")

示例:

{Tab} Comment 1 {Tab}
{Tab} Comment 2 {Tab}
{Tab} Long comment text.

some text
.
"<--Double quotes!!!
.
{Tab}
{Tab} Comment 4 {Tab}

基本上,我想要检索:

Long comment text.   
some text
.
"<--Double quotes!!!
.

2 个答案:

答案 0 :(得分:1)

试试这个:

(?s)\t(?=[^\t]*?").*?\t
  • (?s)使得点字符匹配新行,您的示例包含这些行。
  • \t检查字符串是否以标签
  • 开头
  • (?=[^\t]*?")向前看是否在遇到下一个标签之前有双引号
  • .*\t匹配所有字符,直到下一个标签,如果前瞻已成功

答案 1 :(得分:0)

我找到了答案,感谢@kabb!

我修改了一点RegEx:

(?s)\t(?=[^\t]*[""]+)[^\t]*[\t]{1}

以下是实时测试: http://regex101.com/r/rM6hC3

RegEx