请教该正则应如何写?空格\tab\换行\回车替换成一个空格
本帖最后由 auto 于 2013-2-23 09:25 编辑请教该正则应如何写?空格\tab\换行\回车替换也一个空格,单个'号变成两个单引号''
一对单引号内容则完整保留。多行转成一行。其他的不变
例如: select a.*, 'a b' as aa
from dual a
where 1=1;
结果: select a.*, 'a b' as aa from dual a where 1=1;
下面是是复杂一些的测试数据。
SELECT c.cd_name AS "街乡名称", r.rs AS "人数"
FROM (
SELECT *
FROM cdg_regioncode
WHERE cd_id LIKE '110105___000'
AND cd_id <> '110105000000'
AND cd_availability = '1'
) c
LEFT JOIN (
SELECT substr(r.rzf_xzdxzqh, 1, 9) || '000' AS xzqh, COUNT(1) AS rs
FROM sjcj_rydjbxx r, sjcj_fwdjbxx f
WHERE f.bih_id = r.rzf_fwbh
AND f.fdj_sfzc = '0'
AND f.fwzjbxxdjb_fwzbh IS NOT NULL
AND f.bih_hou_constructiontype = '3'
AND f.fcz_czlx = '08'
AND r.rdj_sfzc = '0'
AND r.fwzjbxxdjb_fwzbh IS NOT NULL
AND r.rdj_sfyx = '1'
AND r.rzf_zslx = '02'
AND r.rzf_xzdxzqh LIKE '110105%'
GROUP BY substr(r.rzf_xzdxzqh, 1, 9)
) r ON c.cd_id = r.xzqh
ORDER BY c.cd_id 正则太深了,头晕 Local $Str = _
"select a.*, 'a b' as aa " & @CRLF & _
' from dual a' & @CRLF & _
' where 1=1;' & @CRLF
;MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExpReplace($str, "((').*?\2)|\v*?(\h)\s+", '$1$3')
MsgBox(0, '替换结果', $Test) 我现在还没弄明白正则表达式是什么意思呢 本帖最后由 auto 于 2013-3-3 22:10 编辑
回复 3# afan
试了这个另外一个代码,好像没有效果
能把正则的写法稍微解释一吗?谢谢
with t as(select '34052419800101001X'id from dual)
select id
from t
where exists(select 1
from dual connect by level<=length(id)-1 --17
having mod(sum(substr(id,level,1)*power(2,18-level)),11)=
case substr(id,-1,1)
when '1' then 0
when '0' then 1
when 'X' then 2
else
12-substr(id,-1,1)
end); 回复 6# auto
你一直也没说要整成什么结果…
难道你想整个这段整成一行?with t as(select '34052419800101001X' id from dual) select id from t where exists(select 1 from dual connect by level<=length(id)-1 --17 having mod(sum(substr(id,level,1)*power(2,18-level)),11)= case substr(id,-1,1) when '1'then 0 when '0'then 1 when 'X'then 2 else 12-substr(id,-1,1) end); 回复 7# afan
空格\tab 替换成一个空格,
单个'号变成两个单引号''
一对单(双)引号内容则完整保留(不管里面是什么)。
换行\回车 替换成空格,即多行转成一行(这个可要也可以不要)
其他的不变
增加一个要求,不知道是否能实现
--后的字符,至行结束,删除
(例如: and id!='123' --过滤ID不等于123的数据
and xh > 1000
转换成: and id!='123' and and xh > 1000 回复afan
空格\tab 替换成一个空格,
单个'号变成两个单引号''
...
auto 发表于 2013-3-3 22:35 http://www.autoitx.com/images/common/back.gif
1,你不用贴代码的方式贴字符串已不存在 \tab
2,单个'号变成两个单引号'' 示例没有体现,不知道何种情况是属于单个
3,转换成: and id!='123' and and xh > 1000 不知道为何会有两个 and...
搞不定~ 回复 9# afan
1、对于1的情况,没有想到,我一会试一下贴成代码
2、我找一个完整的转换的例子吧
3、是笔误。。打的时候,多了一个and
另:正则的注册申请码是D54E759F539DF22F196AC5118C3A0Eauto以前的不见了,给个注册码 回复 10# auto BC3E9348872A3CEEA46D6B60E9B2A21498F1194EFD45
页:
[1]