Regex 查找和替换的问题
嘿,斯塔克社区。我需要帮助处理庞大的信息文件。使用正则表达式是否可以在此标记中找到:Regex 查找和替换的问题,regex,xml,regular-language,Regex,Xml,Regular Language,嘿,斯塔克社区。我需要帮助处理庞大的信息文件。使用正则表达式是否可以在此标记中找到: <category_name><![CDATA[Prekiniai ženklai>Adler|Kita buitinė technika>Buičiai naudingi prietaisai|Kita buitinė technika>Lygintuvai]]></category_name> 以某种方式替换所有其他数据,只
<category_name><![CDATA[Prekiniai ženklai>Adler|Kita buitinė technika>Buičiai naudingi prietaisai|Kita buitinė technika>Lygintuvai]]></category_name>
以某种方式替换所有其他数据,只留下“Adler”或“Lygintuvai”。我正在使用Altova编辑xml文件,所以我找不到其他方法来查找替换。我是新来的正则表达式。所以我想也许你能帮我。@.+?gt\;([\w]+?)\\\\.+?gt;([\w]+?)\]\]\>\@i
@\<category_name\>.+?gt\;([\w]+?)\|.+?gt;([\w]+?)\]\]\>\<\/category_name\>@i
\1 - Adler
\2 - Lygintuvai
\1-阿德勒
\2-利金图瓦
字段可以包含不带空格的字母数字字符
如果要修改可接受字符的范围,请将[\w]更改为其他内容:
[a-z]-仅限字母
[0-9]-仅限数字
等等;([\w]+?)\\\\.+?gt;([\w]+?)\]\]\>\@i
\1-阿德勒
\2-利金图瓦
字段可以包含不带空格的字母数字字符
如果要修改可接受字符的范围,请将[\w]更改为其他内容:
[a-z]-仅限字母
[0-9]-仅限数字
等等。这是可能的,但使用正则表达式处理XML永远不会100%正确(你可以用计算机科学理论证明这一点),而且可能效率很低。例如,Luk给出的解决方案是不正确的,因为它在XML允许的地方不允许空白。使用XQuery或XSLT要好得多,它们都是为工作而设计的(并且都在Altova中工作)。然后,您可以使用XPath表达式来定位感兴趣的元素或属性节点,并且仍然可以使用正则表达式(例如在XPath replace()函数中)来处理文本或属性节点的内容
顺便说一句,您的输入非常奇怪,因为它在CDATA区域中使用了转义序列,如
;但是在CDATA区域中无法识别XML转义序列。这是可能的,但使用正则表达式处理XML永远不会100%正确(你可以用计算机科学理论证明这一点),而且可能效率很低。例如,Luk给出的解决方案是不正确的,因为它在XML允许的地方不允许空白。使用XQuery或XSLT要好得多,它们都是为工作而设计的(并且都在Altova中工作)。然后,您可以使用XPath表达式来定位感兴趣的元素或属性节点,并且仍然可以使用正则表达式(例如在XPath replace()函数中)来处理文本或属性节点的内容
顺便说一句,您的输入非常奇怪,因为它在CDATA区域中使用了转义序列,如
;但是在CDATA区域中无法识别XML转义序列。是的,这是可能的。是学习这些东西的好地方,这是可能的。是一个学习这些东西的好地方。我能解决这个问题吗,find replace理解为字母w或w。而不是任何单词\w-表示任何“单词”字符。如果[0-9a-z]不起作用,您应该尝试[0-9a-z]。\w如何解决此问题,find replace将\w理解为字母w或w。而不是任何单词\w-表示任何“单词”字符。如果\w不起作用,您应该尝试[0-9a-z]