原始问题是在逗号分隔的列列表中确定原始列的内容,这些列可以是别名。此列表不在SQL中的任何选择块中,因为语法几乎相同。我正在使用MSSQL。我的正则表达式应该与C#代码一起使用!所以我开始匹配列之间的内容。然后我指定内容的结尾应该是" column"用括号括起来(或者当有多个空格而不是乘空格时)。而这一切必须完全正确。因此,bla作为blacolumn,不是我想要获得的有效匹配(在这种情况下获取意味着读取匹配值以进行更多编辑)。 当没有附加信息时,值的匹配应仅为值本身:
SELECT
text
FROM
bla
否则只有在没有"文字":
的情况下才能匹配信息SELECT
bla.t as text
FROM
bla
或
SELECT
t as text
FROM
bla
所以我有一个小例子,我突出了应该匹配的内容:
选择文字 FROM
选择 bla.t as text FROM
选择 t 文本FROM
SELECT bla.tatext FROM
选择 bla。文字FROM
选择bla.t作为tatext FROM
选择 bla.t as text FROM
选择bla.t作为tatext, bla.t作为文本FROM
,文字 FROM(SELECT bla。 text FROM)为bla
,'文本' FROM
, [text] FROM
, bla.t as ' text',
只需复制此示例并尝试获取所有突出显示。作为比赛
祝你好运!
答案 0 :(得分:2)
我不确定我理解这个问题。这听起来就像你需要的一样
,([^,]*?text),
这将匹配逗号,0个或更多以逗号text
结尾的非逗号字符和另一个逗号。由于只有逗号之间的文本在括号中,因此将捕获所有文本。
如果您不想在比赛中加入text
,可以
,([^,]*?)text,
或者,如果您不想使用捕获并坚持外观:
(?<=,)(.*?)(?=text,)
详细信息取决于您使用的正则表达式语言。
答案 1 :(得分:0)
使用此模式
(?<=\,)(.*?)(?<=text)(?=\,)
答案 2 :(得分:0)
我也不是专家,但这是否符合您的要求?
文本(?=)
在你想要的关键词之后使用正向前瞻(?=,)。
如果您只想在逗号之间使用关键字,那么您可以使用我们的头像并向后看:
(小于?=,\ S *)文本(?=)