Microsoft Office System 智能标记中的正则表达式支持
摘要:带有智能标记的正则表达式使得智能标记能够更准确地标识应该链接到智能标记操作的文本。学习如何使用正则表达式分析Microsoft Office 智能标记列表文件内的字符串来标识Office 文档中有意义的片段和字词。学习正则表达式语法以及如何标识用于简单操作或更为复杂的操作的不同文本类型。
本页内容
简介
Microsoft Office 智能标记列表
智能标记列表和正则表达式
正则表达式语法的简单介绍
一些示例正则表达式智能标记
更为复杂的操作
小结
简介
开发人员往往认为数据会作为信息存储在表格中,而该表格会进而包含在关系数据库系统中。这种情况只适用于数据子集。大量的信息存储在、电子表格和文档中。Microsoft Office XP 首先使用称为智能标记的技术来解除这种类型数据的锁定。
智能标记可以标识文档内单词和短语。例如,在Microsoft Word 2003 文档中键入MSFT,Word 2003 会指示该“单词”被识别为财务符号(假设已激活Financial Symbol 智能标记)。将鼠标悬停在识别的单词上,将会出现一个小图标(智能标记),您可以通过简单的鼠标单击来展开整个菜单。该菜单为该财务符号提供非常有用的操作列表,如图 1 所示。
图 1. 财务符号的智能标记下拉菜单MSFT
尽管股票符号是更为通用的示例,但还是可能存在更有用和更个性化的智能标记。例如,某公司可能会选择这样的功能,即生成可以识别产品名称或SKU 的智能标记,然后将这些标记链接到他们自己企业系统中。
从开发人员的观点来看,有两种方法可用于实现自定义智能标记。一种方法是以诸如Microsoft Visual Basic 6.0、Microsoft Visual Basic .NET 或Microsoft Visual C# 之类的语言来实现若干接口,并编译结果,然后在Office 上注册它。另一种方法是生成基于XML 的智能标记列表,这种方法在多数情况中更为容易实现。
返回页首
Microsoft Office 智能标记列表
智能标记列表是在可扩展标记语言(XML) 中定义的智能标记识别程序。智能标记列表与在编程语言中使用的智能标记相比,灵活性稍显欠缺,但是如果要识别的是稍受限制的单词或短语列表,它们就非常有用。例如,您可以创建一个识别产品名称Office、TabletPC 和Windows 的智能标记列表,随后将其链接到每个单独产品的Microsoft Web 站点。可以通过下面的XML 定义来完成:
<?xml version="1.0" encoding="UTF-16"?>
<FL:smarttaglist
x mlns:FL=“urn:schemas-microsoft-com:smarttags:list”>
<FL:name>Microsoft Products</FL:name>
<FL:lcid>1033</FL:lcid>
正则匹配 链接 无域名的链接<FL:description>Recognizes 3 Microsoft Products</FL:description> <FL:moreinfourl>www.Microsoft</FL:moreinfourl>
<FL:smarttag type="urn:schemas-manualtags#msproducts">
<FL:caption>Microsoft Products (MOSTL)</FL:caption>
<FL:terms>
<FL:termlist>Windows,TabletPC,Office</FL:termlist>
</FL:terms>
<FL:actions>
<FL:action id="ms">
<FL:caption>Microsoft Website</FL:caption>
<FL:url>www.microsoft/{TEXT}</FL:url>
</FL:action>
</FL:actions>
</FL:smarttag>
</FL:smarttaglist>
为了使用,您必须将以上代码以XML 文件的形式存储在以下目录中:
local_drive:\Program Files\Common Files\Microsoft Shared\Smart
Tag\Lists\
要使其生效,您必须关闭所有已启动的兼容标记的Office 2003 应用程序(例如Word 2003)。下一次启动任意兼容智能标记的应用程序时,Office 会添加该智能标记识别程序的列表定义,只要用户键入三个受支持的产品名称中的一个,该应用程序就会突出显示该产品名,如图2 所示。
图 2. 智能标记会带您进入Microsoft Web 站点。
默认情况下,启用新的智能标记列表。如果智能标记不正确(或者出于特定原因而禁用),可以使用Tools 菜单中的AutoCorrect 选项来打开它,如图 3 所示:
图 3. 使用AutoCorrect 对话框指定智能标记行为
智能标记列表提供了一种非常便捷的方法来添加已定义好的术语列表以进行自动识别。上述示例只说明了智能标记列表中的一小部分功能。在Office 2003 中,通过正则表达式模式匹配的支持,允许更多术语的动态识别,使得这一概念更具有广泛的意义。
注要获得完整的功能列表,请参阅Microsoft Office 2003 智能标记软件开发工具包。
返回页首
智能标记列表和正则表达式
智能标记列表工具除允许搜索列表外,还允许您定义搜索模式。这些搜索模式通过正则表达式定义。正则表达式是通配符搜索的一种强大形式。大多数开发人员和一些超级用户都非常熟悉使用正则表达式来搜索文件(例如*.doc)。在Office 文档的正则表达式模式匹配中,您通常会应用更复杂的模式。例如,下面的模式会在文本字符串中查IP 地址:
(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\. (\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])
注上面的模式显示了一个正则表达式,而不是传统意义上的代码行。正则表达式中不应该包含换行符或行继续符。
这是一个稍显复杂的正则表达式,要向那些不熟悉这种表达式的人进行解释,可能最初会有些困难。稍后再进行详细说明。下面的示例说明如何将正则表达式嵌入到智能标记列表XML 文件中:
<?xml version="1.0" encoding="UTF-16"?>
<FL:smarttaglist
xmlns:FL=“urn:schemas-microsoft-com:smarttags:list”>
<FL:name>IP Addresses</FL:name>
<FL:description>Recognizes IP Addresses</FL:description>
<FL:lcid>1033</FL:lcid>
<FL:smarttag type="urn:schemas-manualtags#ipaddresses">
<FL:caption>IP Address (MOSTL)</FL:caption>
<FL:re>
<FL:exp>(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.
(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\
d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])</FL:exp>
</FL:re>
<FL:actions>
<FL:action id="ip">
<FL:caption>Browse to Address</FL:caption>
<FL:url>{TEXT}/</FL:url>
</FL:action>
<FL:action id="ips">
<FL:caption>Browse to secure Address</FL:caption>
<FL:url>{TEXT}/</FL:url>
</FL:action>
</FL:actions>
</FL:smarttag>
</FL:smarttaglist>
让我们仔细分析该XML 定义文件中最重要的单个元素的含义。最基本地,您创建了使用由Microsoft Corporation 定义的FL 命名空间的XML 定义文件。随后,为识别程序提供名称和说明以及区域设置ID,例如,1033 用于US-English。然后,定义实际的智能标记。为此,您必须提供智能标记标题以显示在智能标记菜单、识别信息(例如术语列表)或者如此例中的正则表达式以及相关联的操作中。
在此情况中,只提供一个正则表达式以用于标识IP 地址。该模式是在<FL:exp> 标记中定义的,该标记是<FL:re> 标记的成员。您可以定义多个表达式,每个表达式识别一个IP 地址(如果需要),这样对于识别一系列的IP 地址和域名非常有用,如本文稍后所示。最后,在<FL:actions> 标记中定义可能的操作。在此例中,定义两个作为智能标记上的单独菜单项结束的不同操作。两个操作都会打开浏览器窗口并导航到IP 地址,一个使用HTTP 协议,另一个使用安全的HTTPS 副本。每个单独的操作都在<FL:action> 标记中定义。每个操作都要求唯一的ID、标题(显示在菜单中)和操作链接的URL。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论