使用SQL Anywhere 16 regex(相当于Perl 5)我想匹配以下字符串中的所有非数字字符:
This 100 is 2 a 333 test.
,以便匹配产生This is a test.
我觉得这需要外观,但我不确定确切的语法。
我的一些失败尝试:
\D*
匹配This
\D*(?=\d)
匹配This
(\D*(?=\d*)|(?<=\d)\D*)*
匹配This
答案 0 :(得分:0)
我认为在这种情况下,基于增加的说明(以及我自己的搜索),不能使用典型的“搜索和替换”功能。似乎典型的“全局”匹配也不可用。鉴于此,一些剩余的选项是
以下是来自SQL Anywhere 12 docs的示例,从带有数字的字符串中提取单词
当尝试拆分字符串时,Lookahead和lookbehind断言对REGEXP_SUBSTR很有用。例如,您可以通过执行以下语句在Customers表的Address列中返回街道名称列表(不包含街道号码):
SELECT REGEXP_SUBSTR( Street, '(?<=^\\S+\\s+).*$' ) FROM Customers;
(\D+)\d*(\D+)\d* ...
问题是你必须手动提供足够的这些来覆盖整个字符串。
REGEXP_SUBSTR
允许匹配事件的规范(第一,第四,......)。
\D+
,并通过循环增加位置。 但是,通常不容易推荐循环。