StringRegExpReplace
正则表达式字符替换.
StringRegExpReplace ( "test", "pattern", "replace" [, count = 0] )
参数
test
|
目标字符串
|
表达式
|
正则表达式比较. 参考 StringRegExp 的详细讲解.
|
替换
|
替换匹配正则表达式匹配的文本. 插入匹配组文本, \0 - \9 (或 $0 - $9) 可以作为一个逆向引用. (见备注)
|
数量
|
[可选] 需要执行替换的次数. 默认 0, 全局替换.
|
返回值
成功:
|
返回基于正则表达式更新后的字符串. 检查 @extended 获取执行的替换数.
|
失败:
|
@error 设置 为非 0 值.
|
@error:
|
2 = 表达式无效. @extended = 表达式偏移误差.
|
备注
使用大括号从当前(替换)数分离反向引用, 比如:"5".
要替换 "" 字符, 必须使用两个相同字符. 这是一个反向引用机制的结果.
"" 与 "$" 替换格式是唯一有效的反向引用支持格式.
参阅 正则表达式 教程, 您可以在其中运行一个脚本来测试你的正则表达式.
函数示例
#include <MsgBoxConstants.au3>
Test1()
Test2()
Test3()
; This example demonstrates a basic replacement. It replaces the vowels aeiou
; with the @ character.
Func Test1()
Local $sInput = "Where have all the flowers gone, long time passing?"
Local $sOutput = StringRegExpReplace($sInput, "[aeiou]", "@")
Display($sInput, $sOutput)
EndFunc ;==>Test1
; The following example demonstrates using back-references to change the date
; from MM/DD/YYYY to DD.MM.YYYY
Func Test2()
Local $sInput = 'some text1 12/31/2009 01:02:03 some text2' & @CRLF & _
'some text3 02/28/2009 11:22:33 some text4'
Local $sOutput = StringRegExpReplace($sInput, '(\d{2})/(\d{2})/(\d{4})', ' $2.$1.$3 ')
Display($sInput, $sOutput)
EndFunc ;==>Test2
; The following example demonstrates the need to double backslash
Func Test3()
Local $sInput = '%CommonProgramFiles%\Microsoft Shared\'
Local $sOutput = StringRegExpReplace($sInput, '%([^%]*?)%', 'C:\\WINDOWS\\Some Other Folder$')
Display($sInput, $sOutput)
EndFunc ;==>Test3
Func Display($sInput, $sOutput)
; Format the output.
Local $sMsg = StringFormat("Input:\t%s\n\nOutput:\t%s", $sInput, $sOutput)
MsgBox($MB_SYSTEMMODAL, "Results", $sMsg)
EndFunc ;==>Display
----------------------------------------
该函数可以通过命令 exect 调用
参见:
StringRegExp, StringReplace
$var_aa = 'Этот~~пример~~демонстрирует~~замену~~гласных~~на~~символ~~-'
$var_aa=StringRegExpReplace($var_aa,'[аяэеоёуюиы]','-')
exect=$var_s1=StringRegExpReplace('замена~~гласных~~на~~символ~~-','[аяэеоёуюиы]','-')||$var_s2=StringRegExpReplace('Удаляет~~<i>теги</i>~~в~~html','<i>(.*?)</i>','$1') GLOBALEXECT<a> ;; 使用正则表达式替换字符串文本
exect=$var_item=StringRegExpReplace(ClipGet(),'[\r\n]+','|') folds="%p"||[combo=BOX_XX] ;; 将列表从剪贴板传递到参数[combo]的示例
"exect=$var_s1=StringRegExpReplace('test~~del~~char~~b~~abcdabcd','[b]','''') GLOBALEXECT<a>" - 从字符串中删除字符"b"
© Аверин Андрей для Total Commander Image Averin-And@yandex.ru
|