当您选择定制 Regex 选项时,显示“文本分析器正则表达式编辑器”。在该窗口中,使用各种内置正则表达式(如电话号码、时间或货币值)解析文本文档。您还可以创建自己的正则表达式定义。
注意:仅当您无法从默认 Regex 方法获得所需结果时,才建议使用“定制 Regex”选项。当您的文本包含默认 Regex 方法无法识别的结构时就会出现这种情况。
提示:若在启动窗口中将“日语”、“中文(简体)”或“中文(繁体)”指定为“语言”选项,则 Regex 模式列表会包含指定语言的单个 Regex。若要添加其他 Regex 模式,建议您在单个 Regex 模式后添加它们。应避免在语言特定的 Regex 模式前使用“单词”模式,因为“单词”模式可能将较长的亚洲语言字符合并为单词。
图 12.7 文本分析器正则表达式编辑器
窗口顶部的脚本编辑器框显示样本文本是如何解析的。“Regex 编辑器”列表中解析正则表达式的结果用颜色突出显示,所用颜色与“Regex 编辑器”列表中的颜色一致。
• 点击上一行和下一行按钮来使用您自己的数据文本填充脚本编辑器框。这使您可以了解给定的文本数据行是如何解析的。
• 点击保存至列按钮以将新列保存到包含正则表达式标记化结果的数据表。有关指定正则表达式结果的详细信息,请参见编辑正则表达式。
注意:保存至列按钮仅使用正则表达式匹配文本。不使用以下设置来修改正则表达式的输出:停止词、重新编码、词干处理、短语或每个单词的最小字符数和最大字符数。
要添加准备用在标记化中的正则表达式,请点击列表下方的加号。将显示“Regex 逻辑库选择”窗口。该窗口包含所有内置正则表达式以及所有最近修改的正则表达式(它们是您在“正则表达式编辑器”的以前实例中创建的)。对内置正则表达式做了标记。使用您指定的名称标记在您的逻辑库中保存的定制正则表达式。只有具有给定名称的最新表达式存储在 Regex 逻辑库中。
在列表中选择一个或多个正则表达式,然后点击确定添加要在标记化中使用的选定正则表达式。使用删除选定项按钮从 Regex 逻辑库中删除一个或多个定制正则表达式。每个用户的 Regex 逻辑库作为 JSL 文件存储在名为 TextExplorer 的目录中。该目录的位置基于您计算机的操作系统,如下所示:
• Windows:"C:/Users/<用户名>/AppData/Roaming/SAS/JMP/TextExplorer/"
• macOS:"/Users/<用户名>/Library/Application Support/JMP/TextExplorer/"
这些文件可以与其他用户共享,但是您不应直接编辑它们。请使用正则表达式编辑器。
通过按“Regex 编辑器”面板中指定的顺序处理正则表达式来标记化词条。要更改正则表达式的顺序,请在列表中选择一个正则表达式并点击列表下的向上或向下箭头按钮。您还可以在正则表达式列表中拖放项来更改执行顺序。蓝色小三角表示当前选择的正则表达式。要删除一个正则表达式并从标记化中排除它,请在列表中选择它并点击列表下的减号。不能删除“多余”正则表达式,它必须在正则表达式序列中显示为最后一个。
当您在列表中选择一个正则表达式时,“Regex 编辑器”面板中的可编辑字段指的是选定的正则表达式。点击并在任意这些字段中键入可以编辑它们。
每个正则表达式具有以下特性:
标题
指定一个名称,用于标识当前窗口中的正则表达式(以及以后“Regex 逻辑库”中的正则表达式)。
Regex
指定正则表达式定义。该正则表达式必须至少具有一组括号来指定正则表达式捕获。
结果
指定用什么替换正则表达式所匹配的文本。该值可以是静态文本、空白或正则表达式捕获的值。正则表达式捕获定义为 Regex 定义的结果:
‒ 要用静态文本替换匹配的文本,请在“结果”字段中指定静态文本。
‒ 要忽略匹配的文本,请将“结果”字段留空。
‒ 要保留正则表达式最外层括号产生的文本,请在“结果”字段中使用“\1”(不含引号)。
‒ 要保留正则表达式的整个结果,请在“结果”字段中使用“\0”(不含引号)。
示例
(可选)使用指示正则表达式行为的颜色指定示例文本字符串。
备注
(可选)指定一个备注以说明正则表达式和它的行为。
颜色
指定颜色以用于标识脚本编辑器框的文本中和“示例”字段中正则表达式的匹配。使用箭头按钮更改颜色。
注意:若 Regex 字段中的正则表达式定义无效,在正则表达式列表中该正则表达式名称旁边将显示一个红色的 X。
按以下步骤来创建您自己的定制正则表达式:
1. 点击列表下方的加号。
2. 在“Regex 逻辑库选择”窗口中,请注意,“空”正则表达式处于选定状态。
3. 点击确定。
4. 在“Regex 编辑器”面板中编辑 Regex 定义。
5. 在“标题”字段中给您的定制正则表达式指定一个唯一名称。
提示:编辑 Regex 定义字段时,使“日志”窗口打开并可见很有帮助。一些错误消息仅在“日志”窗口中显示。要打开“日志”窗口,请选择查看 > 日志。有很多 Internet 资源可用于排查正则表达式问题,如 https://regexr.com/。
使用单词分隔符列表按钮可以指定在标记化过程中单词之间出现的字符列表。字间字符不能作为单词开头,但是若某个正则表达式允许,它们可以出现在某个单词内部。点击该按钮时,您可以在显示的窗口中的列表中添加或删除字符。默认情况下,列表中的唯一字符为空格字符。在“分隔符”窗口中,点击重置按钮可以撤销对分隔符列表的所有修改。对分隔符列表的修改仅应用到当前正则表达式标记化。
按以下方式处理指定的正则表达式和所需的“多余”正则表达式:
1. 比较文本流中的当前字符与分隔符列表。
‒ 若该字符在分隔符列表中,则忽略该字符,处理“多余”临时字符串中的所有累积字符,移到下一字符并重复step 1。
‒ 若该字符不在分隔符列表中,请转到step 2。
2. 将以当前字符开头的字符串与每个正则表达式比较(一次一个,但是不包括“多余”正则表达式)。
‒ 若以当前字符开头的字符串匹配某个正则表达式,则发生以下事件。处理“多余”临时字符串中的所有累积字符。将“结果”字段的值保存为词条。文本流中的当前字符成为跟着匹配字符串的字符。该处理返回到step 1。
‒ 若以当前字符开头的字符串不匹配任何正则表达式直到“多余”正则表达式,请转到step 3。
3. 通过追加当前字符并将当前字符设置为文本流中的下一字符,收集字符到“多余”临时字符串。返回到step 1。
‒ “多余”临时字符串一次累积一个字符,直到其他正则表达式中的一个产生匹配。
‒ “多余”正则表达式的默认结果是放弃累积“多余”临时字符串。
提示:
• 若您将“多余”正则表达式的结果设置为 \1,可能要添加更多分隔符,如标点符号。这确保您的结果不包含指定的标点符号。
• 您可能需要考虑采用以下一个或多个操作来捕获相关词条,而不是将“多余”正则表达式的结果更改为 \1。
‒ 从“Regex 逻辑库”添加更多正则表达式。
‒ 创建定制正则表达式。
该处理遵循上述步骤,直到到达数据表中每行的文本字符串结尾。
点击保存至列按钮以保存到数据表的一个新列,其中包含正则表达式标记化的结果。新列是一个字符列,其名称与在“文本分析器”启动窗口中指定的文本列名称相同;同时追加一个数字到该名称以便列名称是唯一的。
注意:当您将定制正则表达式标记化的结果保存到数据表中的列时,在数据表的每行的原始文本上运行正则表达式处理。不在转换为小写形式的文本字符串版本上运行它。
在“文本分析器正则表达式编辑器”窗口中点击确定后,发生以下事件:
1. 将在“文本分析器正则表达式编辑器”窗口中定义的定制正则表达式保存到 Regex 逻辑库。
警告:仅当您点击确定并且存在定制正则表达式时,才保存定制 Regex 逻辑库。最新保存的正则表达式将在下次可用。使用唯一名称来在 Regex 逻辑库中保留更多正则表达式。要确保某个正则表达式在以后可用,您可以在“文本分析器报表”窗口中保存一个脚本。
2. 将显示文本分析器报表。该报表显示使用指定的正则表达式设置来标记化文本的结果。