问题标签 [character-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
815 浏览

c++ - C++ 正则表达式字符类不匹配

根据我的研究,表达式“[:alpha:]”将匹配任何字母字符,但表达式仅匹配小写字符而不匹配大写字符。我不确定它有什么问题。

0 投票
1 回答
53 浏览

java - 无法删除特定的变音符号

我正在尝试在验证期间从字符串中删除所有变音符号(有关更多背景信息,请参见下文)。为此,我使用以下代码:

我的问题是这不适用于字符 "ø" ,它保持原样。在查看了字符类“InCombiningDiacriticalMarks”之后,我发现了这个问题:What built-in regex character classes are supported Java

这将我带到了所有被认为是变音标记的官方 unicode 列表,这里:https : //www.unicode.org/charts/PDF/U0300.pdf ,代码点 0338 似乎与“ø”匹配得很好。

我是否遗漏了什么,或者 java 中不完全支持字符类“InCombiningDiacriticalMarks”?


至于为什么我需要这个,一些背景:

我正在向外部发送包含斯堪的纳维亚字符的数据,当他们将数据发回时,他们有一个有趣的习惯,即删除甚至替换变音符号(例如 ø 变成 ö)。我试图让他们做对,但就是做不到,而且我无法强迫他们这样做。

因此,为了比较数据以验证发送的内容是我们返回的内容,我必须删除所有变音符号以避免大量误报。

0 投票
2 回答
1726 浏览

javascript - 为什么 /[\w-+]/ 是一个有效的正则表达式,但 /[\w-+]/u 无效?

如果我/[\w-+]/在 Chrome 控制台中输入,它会接受它。我得到了一个正则表达式对象,我可以像往常一样使用它来测试字符串。但如果我输入/[\w-+]/u,它会说VM112:1 Uncaught SyntaxError: Invalid regular expression: /[\w-+]/: Invalid character class

在 Firefox 中,/[\w-+]/工作正常,但如果我/[\w-+]/u在控制台中输入,它只会转到下一行,就好像我输入了一个不完整的语句一样。如果我试图通过运行来强制它创建正则表达式eval('/[\w-+]/u'),它会告诉我SyntaxError: invalid range in character class

为什么u标志使正则表达式无效?MDN RegExp 文档说启用了u一些 Unicode 功能,但我没有看到任何关于它如何影响字符类中的范围的信息。

0 投票
1 回答
149 浏览

regex - 匹配 sed 中 [[:blank:]] 字符类的对面

我找不到一种方法来表示 sed 中字符类的逆。如果这是一个类似 perl 的环境,我会使用 [^\s]。但是在 sed 中,这似乎匹配非 s,而不是非空白。

在一行文本(来自 gdrive)上,我需要捕获第一个非空白标记并忽略该行第一个空白之后(包括)之后的所有内容。

这是我要解析的输入的一个虚假但具有代表性的示例:

我最初的尝试是这样的:

起初它似乎有效,直到我注意到这是在第一个's'而不是第一个空格处切断。

从那以后,我尝试了各种排列,例如:

预期:19845fake-FaKeE-xbk534sWsbBQ

实际:19845fake-FaKeE-xbk534

0 投票
0 回答
86 浏览

java - Java 正则表达式交集 (&&) 不可交换

字符类交集运算符&&,根据其功能的定义,应该是可交换的。[a&&b]应该匹配与任何 a 和 b 完全相同的字符[b&&a]。我发现以下模式都满足这个标准。

[a-z&&abcd]如同[abcd&&a-z]

[a-z&&ab[cd]]如同[ab[cd]&&a-z]

[a-z&&[ab][cd]]如同[[ab][cd]&&a-z]

它们都等价于[abcd]。但是,如果表达[a-z&&[ab]cd],这不再是真的。该表达式仅匹配cand d,但不匹配aand b。但是,翻转版本[[ab]cd&&a-z]与其他模式一样匹配所有四个字符。换句话说

[[ab]cd&&a-z]不一样[a-z&&[ab]cd]

我进入的来源Pattern找出了为什么会这样,我发现这是实现交集的方式(Java 1.8.0_60 JDK)

请注意,标记的行是

并不是

换句话说,在 的右侧&&,每当遇到不在嵌套字符类中的第一个字符时,模式解析器都会假定它之前没有任何内容。因此,在 之后&&,解析器读[ab]rightNode,然后读取cd,但不是与 合并[ab],而是覆盖它。

我知道实际上没有人写像 regex 这样的正则表达式[a-z&&[ab]cd],但是文档仍然暗示它应该可以工作。这是实现中的错误,还是实际上应该以这种方式工作?

0 投票
3 回答
6596 浏览

python - 用 python 和 re 清理文本

我需要清理一些文本,如下面的代码所示:

这段代码必须给我清空questions列表,但我questions清空了。我重新打开了spyder,列表已满,但没有被清理,然后重新打开它,我把它弄空了..控制台错误说:

我正在使用 Python 3.6,特别是 Anaconda 构建 Anaconda3-2018.12-Windows-x86_64。

0 投票
2 回答
80 浏览

javascript - 在字符类中如何解释单词字符?

\w- 代表[A-Za-z0-9_] 字符类

但我无法理解它是如何在字符类中解释的。

所以当我使用

[\w-~]

它失败了T|

但是当我使用

结果是真的,

我无法理解这两种表达方式有何不同?

0 投票
0 回答
20 浏览

regex - 元字符 '.' 是如何工作的?有字符类

我最近学习了正则表达式。到目前为止,我的理解没有问题,但有一个案例让我感到困惑:

如果我理解正确,在这种情况下,表达式 ".+" 应该遍历每个字符,直到其中一个字符出现 [123]。但是在这样的情况下:

abc abc abc 21 英法 英法 23 44

它匹配“ abc abc abc 21 efg efg 23 ”,忽略 2,1,2。

为什么会这样?(我使用 regex101.com 进行检查)

我使用搜索来寻找一些东西,但我没有找到任何关于这个案例的信息。我做了一个解决方法[^123]+[123],但我想了解为什么会发生这种情况。

0 投票
1 回答
83 浏览

c++ - C++ regex_replace 清理连接的十进制数

作为清理 SVG 路径数据字符串以供显示的一部分,我想在连接的小数之间添加空格。

一个例子是“0.1.20”应该变成“0.1 .20” - 当你有2个小数点仅由一个或多个小数分隔时,基本上在第二个小数点之前添加一个空格(即“2.0”不应该变成“2 .0")

我尝试了以下方法:

但是当我传入一个带有连接小数的字符串时

M 46 -38.9 q 3.7.15 7.65.45 1.2.1 2.35.25 2.75.3 5.05.85 3.85.9 6.5 2.4

它在 cout 日志记录行上保持不变。我正在使用类似的正则表达式来清理字符串的其他元素并且它们都可以正常工作,所以我假设它与正则表达式本身直接相关。

0 投票
1 回答
143 浏览

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

我想做的是允许程序根据遇到的文本定义字符类。但是,<[]> 会按字面意思接受字符,以下会产生错误:

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