获取由“#$”分隔的单词

发布于 2024-07-28 09:21:58 字数 246 浏览 12 评论 0原文

如何将以下字符串中的三个单词与 Perl 兼容的正则表达式匹配?

word1#$word2#$word3

我事先不知道实际的单词“word1、word2和word3”。 我只知道分隔符,即#$

而且我无法使用字边界,因为我有多字节编码。 例如,这意味着字符串可以包含 \w 控制字符无法检测到的非 ASCII 字符,例如变音符号。

How can I match the three words in the following string with a Perl compatible regular expression?

word1#$word2#$word3

I don't know the actual words "word1, word2 and word3" in advance. I only know the separator, which is #$.

And I can't use the word boundary as I have a multibyte encoding. This means for instance that the string can contain non-ASCII characters like umlauts which are not detected by the \w control character.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

相对绾红妆 2024-08-04 09:26:49
/([^#]*?)#\$([^#]*?)#\$([^#]*)/
/([^#]*?)#\$([^#]*?)#\$([^#]*)/
メ斷腸人バ 2024-08-04 09:26:08

这适用于任何具有 2 个 # 的字符串

/([^#]+)\#\$([^#]+)\#\$([^#]+)/

This will work for any string that has 2 #

/([^#]+)\#\$([^#]+)\#\$([^#]+)/
遗心遗梦遗幸福 2024-08-04 09:25:25

分割函数可能很有用,尽管它取决于您想对线路执行什么操作。

不过,这是一个例子。

my $line = "word1#$word2#$word3"
my @words = split('#
, $line)

A split function might be useful although it depends what you want to do with the line.

here is an example though.

my $line = "word1#$word2#$word3"
my @words = split('#
, $line)
寄与心 2024-08-04 09:24:44
$str = explode('#

正则表达式对此来说太过分了。

, $str);

正则表达式对此来说太过分了。

$str = explode('#

Regex is overkill for this.

, $str);

Regex is overkill for this.

往事风中埋 2024-08-04 09:24:12
#!/usr/bin/perl

use strict;
use warnings;

my $x = 'word1#$word2#$word3';
print $_, "\n" for split /#\$/, $x;
#!/usr/bin/perl

use strict;
use warnings;

my $x = 'word1#$word2#$word3';
print $_, "\n" for split /#\$/, $x;
生来就爱笑 2024-08-04 09:23:42

试试这个正则表达式:

/(\w+)#\$(\w+)#\$(\w+)/

编辑   在您向我们提供更多信息后(请参阅对此答案的评论):

/((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)/

Try this regular expression:

/(\w+)#\$(\w+)#\$(\w+)/

Edit   After your provided us with more information (see the comments to this answer):

/((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文