标签: character-class

在正则表达式中重用字符类

为了使正则表达式更加简短,是否有一种简写方法来引用同一正则表达式中较早出现的字符类?

例子

有没有办法缩短以下内容:

[acegikmoqstz@#&].*[acegikmoqstz@#&].*[acegikmoqstz@#&]

regex hardcoded character-class

5
推荐指数
1
解决办法
754
查看次数

打印 POSIX 字符类

给定一个类,例如

[:digit:]
Run Code Online (Sandbox Code Playgroud)

我希望输出是

0123456789
Run Code Online (Sandbox Code Playgroud)

请注意,该方法应该适用于所有 POSIX 字符类。这是我尝试过的

$ printf %s '[:digit:]'
[:digit:]
Run Code Online (Sandbox Code Playgroud)

§ 字符类

bash posix character-class

5
推荐指数
1
解决办法
1140
查看次数

连字符和下划线在 sed 中不兼容

我很难让 sed 识别其模式字符串中的连字符和下划线。

有谁知道为什么

[a-z|A-Z|0-9|\-|_]
Run Code Online (Sandbox Code Playgroud)

在以下示例中的工作方式如下

[a-z|A-Z|0-9|_]
Run Code Online (Sandbox Code Playgroud)

?

$  cat /tmp/sed_undescore_hypen
lkjdaslf lkjlsadjfl dfpasdiuy service-type = service-1; jaldkfjlasdjflk address = address1; kldjfladsf
lkjdaslf lkjlsadjfl dfasdf  service-type = service_1; jaldkfjlasdjflk address = address1; kldjfladsf

$  sed 's/.*\(service-type = [a-z|A-Z|0-9|\-|_]*\);.*\(address = .*\);.*/\1    \2/g' /tmp/sed_undescore_hypen
lkjdaslf lkjlsadjfl dfpasdiuy service-type = service-1; jaldkfjlasdjflk address = address1; kldjfladsf
service-type = service_1    address = address1

$  sed 's/.*\(service-type = [a-z|A-Z|0-9|\-]*\);.*\(address = .*\);.*/\1    \2/g' /tmp/sed_undescore_hypen
service-type = service-1    address = address1
lkjdaslf lkjlsadjfl dfasdf  service-type = service_1; …
Run Code Online (Sandbox Code Playgroud)

regex sed character-class

5
推荐指数
1
解决办法
4947
查看次数

[\s\S] 与 . (点)?

当我们在同一个字符类中包含字符类和否定字符类的速记时,它是否与 dot 相同这意味着任何字符?

我在regex101.com上做了一个测试,每个字符都匹配。

[\s\S] [\w\W][\d\D]一样. 吗?

我想知道这种行为是否在 Web 的前端和后端语言(如 Javascript、Php、Python 等)中持续存在。

regex regex-negation character-class

5
推荐指数
1
解决办法
1030
查看次数

如何使用带有字符类的加号作为正则表达式的一部分?

在cygwin中,这不会返回匹配:

$ echo "aaab" | grep '^[ab]+$'
Run Code Online (Sandbox Code Playgroud)

但这确实会返回一个匹配:

$ echo "aaab" | grep '^[ab][ab]*$'
aaab
Run Code Online (Sandbox Code Playgroud)

这两个表达式不一样吗?有没有办法表达"字符类的一个或多个字符"而不键入两次字符类(如在秒示例中)?

根据这个链接,两个表达式应该是相同的,但也许Regular-Expressions.info不包括cygwin中的bash.

regex bash character-class

4
推荐指数
2
解决办法
3536
查看次数

让awk使用字符类

如何让awk识别字符类?

例如,这个:

echo "a\n1\nb\n2\nc" | awk '/1/'
Run Code Online (Sandbox Code Playgroud)

1按预期输出,但这个:

echo "a\n1\nb\n2\nc" | awk '/\d/'
Run Code Online (Sandbox Code Playgroud)

没有输出任何我期望的东西,12在过滤器中存活.

我认为这可能与shell转义(zsh)有关,但awk '/\\d/'也无效.

regex awk character-class

4
推荐指数
1
解决办法
2479
查看次数

为什么[^\w]匹配某些单词字符但不匹配[^\p {Word}]?

我写了一个Perl脚本,打印出与Unicode属性匹配的字符.到目前为止,它似乎适用于大多数房产.

但它打印出ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ ÿ匹配的字符[^\w].这些字符应该匹配\w.奇怪的是,他们匹配\p{Word}.

我试过没有成功:

  • map { decode ( "UTF-8", $_ ) }
  • map { pack 'U0C*', unpack 'C*', $_ }

如何使[^\w]这些单词字符不匹配?

chars.pl

#!/usr/bin/perl

use warnings;
use strict;
use utf8;

binmode STDOUT, ':utf8';

my $c;
my $cols = 80;
my $arg = shift;
my $regex = qr/$arg/;

for ( map { chr } 0x20 .. 0xFFFF )
{
  next if /\p{Unassigned}|\p{NChar}|\p{Cs}/;

  if ( $_ =~ $regex )
  {
    print STDOUT;
    print …
Run Code Online (Sandbox Code Playgroud)

perl character-class

4
推荐指数
1
解决办法
152
查看次数

正则表达式“^[[:digit:]]$”在 AWK/GAWK 中未按预期工作

我在 RHEL 上的 GAWK 版本是:

gawk-3.1.5-15.el5
Run Code Online (Sandbox Code Playgroud)

我想打印一行,如果它的第一个字段包含所有数字(没有特殊字符,甚至要考虑空格)

Example:

echo "123456789012345,3" | awk -F, '{if ($1 ~ /^[[:digit:]]$/)  print $0}'

Output:
Nothing

Expected Output:
123456789012345,3
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?我的 AWK 版本不理解 GNU 字符类吗?请帮忙

awk gnu gawk character-class

4
推荐指数
1
解决办法
2702
查看次数

perl6如何在用户定义的字符类中插入变量?

我正在尝试做的是允许程序根据遇到的文本来定义字符类。但是,<[]>从字面上接受字符,并且以下产生错误:

my $all1Line = slurp "htmlFile";
my @a = ($all1Line ~~ m:g/ (\" || \') ~ $0 {} :my $marker = $0; http <-[ $marker ]>*? page <-[ $marker ]>*? /); # error: $marker is taken literally as $ m a r k e r
Run Code Online (Sandbox Code Playgroud)

我想匹配所有格式为“ https:// foo?page = 0?ssl = 1 ”或“ http ... page ...”的链接

非常感谢你!

variables perl6 user-defined character-class raku

4
推荐指数
1
解决办法
110
查看次数

从 stringi 字符集中的字母数字 id 中排除“I”和“O”

我从Generate unique alphanumeric IDs中了解到,我可以使用stringistri_rand_strings生成唯一的字母数字 ID。我试图找出一种有效的方法来做到这一点,但只包括数字 0-9 和所有字母,但“I”和“O”除外。我似乎无法弄清楚如何将其包含在模式中c( LETTERS[c(1:8,10:14,16:26)],"[0-9]")

stri_rand_strings(25, 6)
Run Code Online (Sandbox Code Playgroud)

regex r character-class stringi

4
推荐指数
1
解决办法
92
查看次数

标签 统计

character-class ×10

regex ×6

awk ×2

bash ×2

gawk ×1

gnu ×1

hardcoded ×1

perl ×1

perl6 ×1

posix ×1

r ×1

raku ×1

regex-negation ×1

sed ×1

stringi ×1

user-defined ×1

variables ×1