在“正则表达式编辑器”中定制 Regex
当您选择定制 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.
比较文本流中的当前字符与分隔符列表。
‒
若该字符在分隔符列表中,则忽略该字符,处理“多余”临时字符串中的所有累积字符,移到下一字符并重复
第 1 步
。
‒
若该字符不在分隔符列表中,请转到
第 2 步
。
2.
将以当前字符开头的字符串与每个正则表达式比较(一次一个,但是不包括“多余”正则表达式)。
‒
若以当前字符开头的字符串匹配某个正则表达式,则发生以下事件。处理“多余”临时字符串中的所有累积字符。将“结果”字段的值保存为词条。文本流中的当前字符成为跟着匹配字符串的字符。该处理返回到
第 1 步
。
‒
若以当前字符开头的字符串不匹配任何正则表达式直到“多余”正则表达式,请转到
第 3 步
。
3.
通过追加当前字符并将当前字符设置为文本流中的下一字符,收集字符到“多余”临时字符串。返回到
第 1 步
。
‒
“多余”临时字符串一次累积一个字符,直到其他正则表达式中的一个产生匹配。
‒
“多余”正则表达式的默认结果是放弃累积“多余”临时字符串。
提示:
•
若您将“多余”正则表达式的结果设置为 \1,可能要添加更多分隔符,如标点符号。这确保您的结果不包含指定的标点符号。
•
您可能需要考虑采用以下一个或多个操作来捕获相关词条,而不是将“多余”正则表达式的结果更改为 \1。
‒
从“Regex 逻辑库”添加更多正则表达式。
‒
创建定制正则表达式。
该处理遵循上述步骤,直到到达数据表中每行的文本字符串结尾。
将结果保存到数据表中的列
点击
保存至列
按钮以保存到数据表的一个新列,其中包含正则表达式标记化的结果。新列是一个字符列,其名称与在“文本分析器”启动窗口中指定的文本列名称相同;同时追加一个数字到该名称以便列名称是唯一的。您还可以使用“列”>“实用工具”>“通过文本匹配新建列”下的独立“正则表达式”实用工具。请参见《
使用 JMP
》中的
“通过文本匹配创建新列”
。
注意:
当您将定制正则表达式标记化的结果保存到数据表中的列时,在数据表的每行的原始文本上运行正则表达式处理。不在转换为小写形式的文本字符串版本上运行它。
关闭文本分析器正则表达式编辑器
在“文本分析器正则表达式编辑器”窗口中点击
确定
后,发生以下事件:
1.
将在“文本分析器正则表达式编辑器”窗口中定义的定制正则表达式保存到 Regex 逻辑库。
警告:
仅当您点击
确定
并且存在定制正则表达式时,才保存定制 Regex 逻辑库。最新保存的正则表达式将在下次可用。使用唯一名称来在 Regex 逻辑库中保留更多正则表达式。要确保某个正则表达式在以后可用,您可以在“文本分析器”报表窗口中保存一个脚本。
2.
将显示“文本分析器”报表。该报表显示使用指定的正则表达式设置来标记化文本的结果。