TC官方合作论坛

标题: 【字符串类】正则表达式第二课。转义字符,圆括号,方括号。 [打印本页]

作者: 剑仙十号    时间: 2017-6-22 19:22
标题: 【字符串类】正则表达式第二课。转义字符,圆括号,方括号。
本帖最后由 剑仙十号 于 2018-4-20 22:28 编辑

【字符串类】正则表达式第二课。转义字符,圆括号,方括号。

第一节:转义字符\ (也可以写/)。
在PHP中,\将一个字符标记为特殊字符、或原义字符、或向后引用、或八进制转义符。

例如:在PHP中,
‘n’ 匹配字母 "n"。
’\n’ 匹配 换行符。
‘\\’ 匹配 "\"。
‘\(’ 则匹配 "("。

tc使用PHP正则表达式。
tc收集到的字符串,要提交到PHP正则库来处理。
tc编辑器,有自己的转义字符。而PHP正则,也有自己的转义字符。
这样在带\的地方,必须多加一个\\。

怎样检验,tc提交的正则字符串是否准确?
把表达式放在弹窗中,用messagebox()弹窗来显示。messagebox()弹窗 收集到的内容,就是tc向PHP提交的内容。弹窗的内容正确,向PHP提交的内容就正确。

=======================================================
元字符的匹配。
. ? + * 都是PHP的元字符。

要匹配 "\"
PHP的写法 \\ ,tc的写法 \\\\

在tc编辑器中,\是转义符号。在PHP中,\也是转义符号。这样就有重复。
tc编辑器,收集到的字符串,必须提交到PHP正则库来处理。
tc编辑器的作用是收集。在tc编辑器中,\\是收集到一个\。\\\\是收集到两个\。
所以要匹配到 "\",PHP的写法 \\ ,tc的写法 \\\\

要匹配 "."
PHP的写法 \. ,tc的写法 \\.

要匹配 "?"
PHP的写法 \? ,tc的写法 \\?

要匹配 "+"
PHP的写法 \+ ,tc的写法 \\+

匹配 "*"
PHP的写法 \* ,tc的写法 \\*

PHP中,匹配圆括号字符,用 \( 和 \) 。
在TC中,匹配圆括号字符,用 \\( 和 \\) 。

=======================================================

第二节:用()表示一个整体,或标记一个子表达式。
第一讲:表示一个整体的()。

=======================================================
第二讲:表示一个子表达式的()。例如:
var 表达式 = "..(qqqq).."
主表达式是:"..(qqqq).."
子表达式是:(qqqq)
.
子表达式,拥有独立的操作函数。
正则子表达式匹配()
正则子表达式替换()
例子:
var 源字符串 = "aaqqqqbb"
var 表达式 = "..(qqqq).."
var arr=正则表达式匹配(源字符串,表达式,真,真)
var n = 数组大小(arr)
if(n > 0)
for(var j = 0;  j < n;  j++)
  traceprint(arr[j])
end
end
//============================
var arr子=正则子表达式匹配(源字符串,表达式,真,真)
var n2 = 数组大小(arr子)
if(n2 > 0)
for(var j = 0;  j < n2;  j++)
  traceprint(arr子[j])
end
end
对比看出:同一个表达式,正则子表达式函数,只匹配子表达式的内容,替换子表达式的内容。

=======================================================

第三节:表示一个集合的“[ ]”。
在“[ ]”内输入一个范围,就可以匹配范围内的单个字符。 一个集合,每次只匹配一个字符。
例子:“[0-9]”可以匹配所有的单个数字,我们就可以用“[0-9]”匹配“a1b2c3”中的“1”、“2”和“3”。

“[a-z]” 匹配单个小写字母,
“[A-Z]” 匹配单个大写字母。
如图:b17
“[a-z]” 用来匹配 单个小写字母的,为什么大写字母也匹配?
.
第一课讲过:
var arr=正则表达式匹配(…, …, 是否_不区分大小写, 是否全局, 是否Unicode码, 是否多行)
.
参数3,默认为假,默认区分大小写。
如果设置为 真 ,则不区分大小写。
.
“[a-z]”在无视大小写的情况下,等价于“[A-Z]”,所以我们可以用“[a-z]”,匹配到大写字母。
例子:
var 源字符串 = "abcdABCD"
var 表达式 = "abcd"
var arr=正则表达式匹配(源字符串,表达式,真,真)
if(数组大小(arr) > 0)
for(var j = 0;  j < 数组大小(arr);  j++)
  traceprint(arr[j])
end
end
//调试结果:"abcd"  第11行。
//调试结果:"ABCD"  第11行。
参数3:是否_不区分大小写,
设置为真,则不理会表达式的。只要表达式带有a,大A,小a,都匹配过来。
设置为假,则按表达式的。表达式是大"A",仅匹配大A。表达式是小"a",仅匹配小a。


用 [\\x{4e00}-\\x{9fa5}],匹配单个中文。
\\x 是什么意思?
在Delphi中,十六进制用 $ 打头。
在C++中,十六进制用 0x打头。
在PHP中,十六进制用 \x打头。PHP的\x,就是tc的\\x。
=======================================================
作者: 剑仙十号    时间: 2017-6-22 19:22
本帖最后由 剑仙十号 于 2018-4-21 18:31 编辑

第一课:
http://bbs.tyuyan.net/forum.php?mod=viewthread&tid=65818&mobile=no
第三课:
http://bbs.tyuyan.net/forum.php?mod=viewthread&tid=65820&mobile=no
二楼,更新信息专用。
tc简单开发_爱好群:
433286131 (462/500)

tc简单开发_爱好群Ⅱ:
143358382 (192/500)

tc办公文本_爱好群:
612661895(29/500)

本群大神众多,新手众多。群文件内 资源海量。 希望新手 分享更多笔记,减少重复造轮子的时间。 好编程,齐学习,齐进步。
作者: peter_net    时间: 2017-6-23 03:04
感谢无私的分享!!
作者: itcfan    时间: 2017-6-23 09:00

作者: 东月山    时间: 2017-6-23 15:25
有没搞错这还要隐藏啊!!!!

作者: 05windows    时间: 2017-6-26 10:23
reateObject("VBScript
作者: 13533234040    时间: 2017-6-26 21:50
666666666666666666666666666666666666666
作者: frzreo    时间: 2017-9-4 01:58
学习
作者: 312864058qq    时间: 2017-9-20 02:14
学习到了,真的很强啊
作者: baige0428    时间: 2017-9-22 17:53
看看
作者: cjxdn    时间: 2017-10-26 02:11
看看
作者: loo阿拉无    时间: 2017-11-10 22:58
啊啊啊啊啊啊啊啊啊啊啊啊
作者: yanzehua    时间: 2018-1-2 22:40
kjkljkl

作者: polk159    时间: 2018-1-2 22:49
DSFAADSF
作者: asd7463120    时间: 2018-1-20 21:45
怎么匹配网址
作者: flywuya88    时间: 2018-1-29 13:43
则表达式第二课
作者: luxinwen    时间: 2018-2-6 19:55
http://bbs.tyuyan.net/forum.php? ... 65819&mobile=no
作者: justpan01    时间: 2018-4-20 21:47
看看
作者: hitomisky    时间: 2018-4-27 17:45
正则表达式第二课。转义字符,圆括号,方括号。 [修改]
作者: dpx005    时间: 2018-5-5 23:55
看看看看看
作者: xyn3007    时间: 2018-9-9 23:13
sdafffffffffffffffff
作者: asco02    时间: 2018-9-10 05:03
大12222222222222222




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1