如何在 VBScript RegEx 中替换为换行符
How to Replace with Line Feed in VBScript RegEx
我正在使用 VBScript 并且有一个脚本可以将 xml 转换为文本文件。
我正在尝试进行替换以将字符串 ###EntryEnd###\|
替换为 LF 字符。
我在替换模式中尝试了 \n
和 \x0a
,但它们不起作用。我发现的唯一解决方法是改用 Chr(10)
。
我一直在寻找此行为的答案,但未能找到。 \n
和 \x0a
都应该有效。有什么建议吗?
代码如下:
' Method to process the file
Private Function PrepFile(ByVal strInp)
With New RegExp
.Global = True
.Pattern = "\|"
strInp = .Replace(strInp, "")
.Pattern = "<xmldoc .*?xml:lang=""([^""]+)"">"
strInp = .Replace(strInp, "English||Part Of Speech|Note|EngDef|Glossary Definition###EntryEnd###|")
.Pattern = "<remove>.*?</remove>"
strInp = .Replace(strInp, "")
.Pattern = "(<tab/>|</para>)"
strInp = .Replace(strInp, "|")
.Pattern = "<[^>]*>"
strInp = .Replace(strInp, "")
.Pattern = "\n"
strInp = .Replace(strInp, "")
.Pattern = "###EntryEnd###\|"
strInp = .Replace(strInp, chr(10))
End With
PrepFile = strInp
End Function
示例文件片段:
<?xml version="1.0" encoding="UTF-8"?>
<xmldoc source="" type="TERMS" xml:lang="hu-HU">
<para id="13" name="Entry"><notrans><seg>School Administrator</seg><tab/></notrans><remove>___________</remove><seg>iskolavezető</seg></para>
<para id="14" name="Usage"><notrans><seg> </seg><tab/></notrans><remove>HASZNÁLAT:</remove><seg> </seg></para>
<para id="15" name="EntryText"><notrans><seg> </seg><tab/></notrans><remove>MEGHATÁROZÁS:</remove><seg> </seg></para>
<para id="16" name="Context"><remove>PÉLDA:</remove><remove><seg>Cathy Brown iskolavezető</seg></remove><notrans>###EntryEnd###</notrans></para>
<para id="17" name="Entry"><notrans><seg>School Resource Officer</seg><tab/></notrans><remove>___________</remove><seg>iskolarendőr</seg></para>
<para id="18" name="Usage"><notrans><seg> </seg><tab/></notrans><remove>HASZNÁLAT:</remove><seg> </seg></para>
<para id="19" name="EntryText"><notrans><seg>a law enforcement officer who is responsible for providing security and crime prevention services in schools in parts of the United States and Canada.|</seg><tab/></notrans><remove>MEGHATÁROZÁS:</remove><seg>rendőr, aki azért felelős, hogy az iskolákban biztonsági és bűnmegelőzési feladatokat lásson az Egyesült Államok és Kanada egyes területein.</seg></para>
<para id="20" name="Context"><remove>PÉLDA:</remove><remove><seg>Ocalai iskolarendőrök</seg></remove><notrans>###EntryEnd###</notrans></para>
</xmldoc>
在你的问题中 "problem"(完全错误的假设)可以在
中找到
\n
和 \x0a
都应该有效
Replace
方法的 documentation 没有声明替换字符串允许使用转义序列,除了 </code>、<code>
、...引用正则表达式模式中的捕获组。
因此,如果 RegExp
对象在替换字符串中不提供此行为,并且由于 VBScript 解析器不处理字符串中的任何转义序列(转义双引号除外),则没有任何元素处理\n
到换行转换。
您可以使用指示的转义序列来表示 搜索模式 字符串中的非打印字符,但在 替换字符串 。
如果您不喜欢 Chr(10)
函数调用,您可以使用可用的 vbLf
常量来引用换行符
strInp = .Replace(strInp, vbLf)
我正在使用 VBScript 并且有一个脚本可以将 xml 转换为文本文件。
我正在尝试进行替换以将字符串 ###EntryEnd###\|
替换为 LF 字符。
我在替换模式中尝试了 \n
和 \x0a
,但它们不起作用。我发现的唯一解决方法是改用 Chr(10)
。
我一直在寻找此行为的答案,但未能找到。 \n
和 \x0a
都应该有效。有什么建议吗?
代码如下:
' Method to process the file
Private Function PrepFile(ByVal strInp)
With New RegExp
.Global = True
.Pattern = "\|"
strInp = .Replace(strInp, "")
.Pattern = "<xmldoc .*?xml:lang=""([^""]+)"">"
strInp = .Replace(strInp, "English||Part Of Speech|Note|EngDef|Glossary Definition###EntryEnd###|")
.Pattern = "<remove>.*?</remove>"
strInp = .Replace(strInp, "")
.Pattern = "(<tab/>|</para>)"
strInp = .Replace(strInp, "|")
.Pattern = "<[^>]*>"
strInp = .Replace(strInp, "")
.Pattern = "\n"
strInp = .Replace(strInp, "")
.Pattern = "###EntryEnd###\|"
strInp = .Replace(strInp, chr(10))
End With
PrepFile = strInp
End Function
示例文件片段:
<?xml version="1.0" encoding="UTF-8"?>
<xmldoc source="" type="TERMS" xml:lang="hu-HU">
<para id="13" name="Entry"><notrans><seg>School Administrator</seg><tab/></notrans><remove>___________</remove><seg>iskolavezető</seg></para>
<para id="14" name="Usage"><notrans><seg> </seg><tab/></notrans><remove>HASZNÁLAT:</remove><seg> </seg></para>
<para id="15" name="EntryText"><notrans><seg> </seg><tab/></notrans><remove>MEGHATÁROZÁS:</remove><seg> </seg></para>
<para id="16" name="Context"><remove>PÉLDA:</remove><remove><seg>Cathy Brown iskolavezető</seg></remove><notrans>###EntryEnd###</notrans></para>
<para id="17" name="Entry"><notrans><seg>School Resource Officer</seg><tab/></notrans><remove>___________</remove><seg>iskolarendőr</seg></para>
<para id="18" name="Usage"><notrans><seg> </seg><tab/></notrans><remove>HASZNÁLAT:</remove><seg> </seg></para>
<para id="19" name="EntryText"><notrans><seg>a law enforcement officer who is responsible for providing security and crime prevention services in schools in parts of the United States and Canada.|</seg><tab/></notrans><remove>MEGHATÁROZÁS:</remove><seg>rendőr, aki azért felelős, hogy az iskolákban biztonsági és bűnmegelőzési feladatokat lásson az Egyesült Államok és Kanada egyes területein.</seg></para>
<para id="20" name="Context"><remove>PÉLDA:</remove><remove><seg>Ocalai iskolarendőrök</seg></remove><notrans>###EntryEnd###</notrans></para>
</xmldoc>
在你的问题中 "problem"(完全错误的假设)可以在
中找到\n
和\x0a
都应该有效
Replace
方法的 documentation 没有声明替换字符串允许使用转义序列,除了 </code>、<code>
、...引用正则表达式模式中的捕获组。
因此,如果 RegExp
对象在替换字符串中不提供此行为,并且由于 VBScript 解析器不处理字符串中的任何转义序列(转义双引号除外),则没有任何元素处理\n
到换行转换。
您可以使用指示的转义序列来表示 搜索模式 字符串中的非打印字符,但在 替换字符串 。
如果您不喜欢 Chr(10)
函数调用,您可以使用可用的 vbLf
常量来引用换行符
strInp = .Replace(strInp, vbLf)