gpt4 book ai didi

regex - 如何在Perl中使用Regex中的分词,星号和分词?

转载 作者:行者123 更新时间:2023-12-04 05:18:12 24 4
gpt4 key购买 nike

我在Perl中有一个复杂的预编译正则表达式。在大多数情况下,正则表达式很好,并且可以匹配所有应该匹配的内容,而不匹配不应该匹配的所有内容。除了一点。

基本上我的正则表达式看起来像:

my $regexp = qr/\b(FOO|BAR|\*)\b/;

不幸的是 m/\b\*\b/example, *不匹配。由于误报,只有 m/\*/可以使用,我不能使用。有什么解决方法吗?

从评论中-误报是: **example*exam*ple
正则表达式的目的是什么? -它应该提取同事已经输入到产品数据中的关键字(一个是单个星号)。目的是将这些信息从自由文本字段移到原子字段。

最佳答案

听起来您想将*视为单词字符。

\b

相当于
(?x: (?<!\w)(?=\w) | (?<=\w)(?!\w) )

所以你要
(?x: (?<![\w*])(?=[\w*]) | (?<=[\w*])(?![\w*]) )

应用后,您将获得以下内容:
qr/
(?: (?<![\w*])(?=[\w*]) | (?<=[\w*])(?![\w*]) )
(FOO|BAR|\*)
(?: (?<![\w*])(?=[\w*]) | (?<=[\w*])(?![\w*]) )
/x

但是,鉴于我们对中间表达式的了解,可以将其简化为以下内容:
qr/(?<![\w*])(FOO|BAR|\*)(?![\w*])/

关于regex - 如何在Perl中使用Regex中的分词,星号和分词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com