1

我正在寻找从源中提取“abc”的方法,其中 ABC 将始终以“X”开头并以“Y”停止。

目前我正在使用:

  Dim myString As String = source3RTB.Text
    Dim finalString As String = myString.Substring((myString.IndexOf("X")), (myString.IndexOf("Y") - myString.IndexOf("X")) + 1)
    source2RTB.Text = finalString

    sourceRTB.Text = myString.Trim(finalString)

但是上面的代码存在问题,只选择第一个 X 和第一个 Y ...

源代码是复杂的行集(xxxx)正则表达式不能很好地(?<=X)(.*?)(?=Y)工作,因为它只适用于一小部分源代码,当我在整个源代码上尝试它时它不起作用(不确定是不是因为新行,或者。 ..)

任何想法 ?

4

1 回答 1

1

描述

X这个正则表达式将捕获一个和之间的内部文本Y

(?:^|\s*?)\b(x(\w*)y)\b(?=\s*|$)

在此处输入图像描述

\w*可以用您要查找的任何搜索替换。如果您希望将新行与 匹配,.*?那么您应该在m您的正则表达式命令中使用该选项以允许.匹配新行字符。

如果 OP 包含示例文本,我将进一步定制此解决方案。

团体

第 0 组获取整个匹配字符串,包括前面的空格

  1. 获取完整的字符串,包括打开和关闭标签
  2. 获取字母字符的内部字符串

PHP 代码示例

<?php
$sourcestring="I'am xlikelyy xupvotey photos of xkittensy on the internet.";
preg_match_all('/(?:^|\s*?)\b(x(\w*)y)\b(?=\s*|$)/i',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>

$matches Array:
(
    [0] => Array
        (
            [0] =>  xlikelyy
            [1] =>  xupvotey
            [2] =>  xkittensy
        )

    [1] => Array
        (
            [0] => xlikelyy
            [1] => xupvotey
            [2] => xkittensy
        )

    [2] => Array
        (
            [0] => likely
            [1] => upvote
            [2] => kittens
        )

)
于 2013-05-23T12:35:29.417 回答