Ruby 如何删除&#x2002&#x2014–我的XML文件中的特殊字符
这是xml文件的一个示例Ruby 如何删除&#x2002&#x2014&#x2013;我的XML文件中的特殊字符,ruby,xml,regex,parsing,Ruby,Xml,Regex,Parsing,这是xml文件的一个示例 <row tnote="0"> <entry namest="col2" nameend="col4" us="none" emph="bld"><blst> <li><text>Single, head of household, or qualifying widow(er)—$55,000</text></li> <li><text>M
<row tnote="0">
<entry namest="col2" nameend="col4" us="none" emph="bld"><blst>
<li><text>Single, head of household, or qualifying widow(er)—$55,000</text></li>
<li><text>Married filing jointly—$115,000</text></li>
</blst></entry>
<entry colname="col6" ldr="1" valign="middle"> </entry>
<entry colname="col7" valign="middle"> 5.</entry>
</row>
但是它似乎不起作用…我的正则表达式不正确吗?因为您的正则表达式的格式是
/^…$/
,它将只与整个字符串匹配。您将只跳过完全由一个HTML实体组成的文本。因为您的正则表达式的格式为/^…$/
,所以它将只与整个字符串匹配。您将只跳过完全由一个HTML实体组成的文本。代码>不是实体引用,而是字符引用。对于XML解析器,—
与原始字符-
完全相同,因此,当您通过属性(如元素.text
)查看XML解析器生成的DOM时,您不会看到任何带有符号的内容,而是一个简单的-
字符
因此,原则上,您可以将其与正则表达式匹配,比如/[-- ]/代码>。但是,如果您使用的是Ruby 1.8,您会遇到一个问题,即语言本身不支持Unicode,因此/[-- ]/
无法正常工作:它将尝试删除UTF-8表示的-
、-
和中的每个字节 代码>,这可能会损坏任何其他字符
为每个目标字符进行简单的字符串替换将正常工作,因为这不需要特殊的字符处理。(当然,如果您在源代码中直接包含-
这样的字符,您还必须正确地对该脚本进行文件编码,因此可能更容易使用这样的字符串文字转义。)“\xe2\x80\x94”
)...
不是实体引用,而是字符引用。对于XML解析器,—;
与原始字符-
完全相同,因此当您通过元素.text
等属性查看XML解析器生成的DOM时,您将不会看到任何带有符号和的内容,而是simple-
字符
因此,原则上,您可以将其与正则表达式匹配,比如/[-- ]/代码>。但是,如果您使用的是Ruby 1.8,您会遇到一个问题,即语言本身不支持Unicode,因此/[-- ]/
无法正常工作:它将尝试删除UTF-8表示的-
、-
和中的每个字节 代码>,这可能会损坏任何其他字符
对每个目标字符进行简单的字符串替换可以正常工作,因为这不需要特殊的字符处理。(当然,如果您在源代码中直接包含-
这样的字符,您还必须正确地对该脚本进行文件编码,因此可能更容易使用这样的字符串文字转义。“\xe2\x80\x94“
)这段代码是用什么语言编写的?strip
做什么?不,字符引用不表示实体。相反,实体用于表示字符引用。
是实体引用,名为mdash的实体表示值&
(请参阅)因此,实体引用&mdash;
引用了字符引用&8212;
,该字符引用了Unicode字符U+2014。@Gumbo:U+nnnn
符号使用十六进制数,而不是十进制:U+2014
@Alan Moore:啊,当然有。这段代码是用什么语言编写的?strip
的功能是什么?不,chara字符引用不表示实体。相反,实体用于表示字符引用。
是一个实体引用,名为mdash的实体表示值&8212;
(请参阅)。因此实体引用&mdash;
引用了字符引用&8212;
,该字符引用了Unicode字符U+2014。@Gumbo:U+nnnn
符号使用十六进制数,而不是十进制:U+2014
。@Alan Moore:啊,是的,当然有。
if e.text.strip =~ /^ [0-9][0-9];$/ then
next
else
subLines << e.text
end