问题标签 [regex-alternation]
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.
regex - 在正则表达式中使用静态字符串一次,同时使用两种模式 OR
这是我的正则表达式:
如您所见,有两种模式,它们\s[a-zA-Z]:\\[\\\S|*\S]?.*$
与运算符\s\w*
相结合|
。并且STATICSTRING
在每个中都重复。
有没有办法写STATICSTRING
一次?
regex - 包含子字符串且没有空格的正则表达式模式
我想在 Angular 中验证输入表单,字符串必须包含子字符串:
或者
和
例如:
对于前 3 个,我有一些工作模式:
但这并不能验证第四个。
regex - 使 sed 正则表达式交替遵循从左到右的优先级?
我正在尝试使用正则表达式从 格式化一些二进制文件xxd -b
,但为了简单地演示这一点,我将向您展示我期望发生的事情:
要删除的正则表达式:/1x|1.*/
文本:1x21y3333333313333
->2
如果所有出现的1x
都被删除,那么从第一个 1 开始出现的所有内容都应该被删除。发生了什么应该立即显而易见,但如果不是,请使用 this。关键是如果1x
匹配,则应该中止模式的其余部分。
这是echo "AA" | xxd -b
(的绑定转储AA\n
)的输出:
我的目标是 1. 删除每个字节的第一个 0(ascii = 7 位)和 2. 删除字符串的其余部分,以便只保留实际的二进制文件。所以我把它输入sed 's/ 0//g'
:
添加第二步,sed -E 's/ 0| .*//g'
:
显然,我希望得到:
我尝试过但没有完成工作的事情:
xxd
可以-g0
合并列,但它保留每个字节中的第一个零(每个字符占用一个字节,而不是 7 位)-r
与此同时,我将使用 perl,但这种行为让我感到困惑,也许这里有一个原因(教训)?
c# - 如何在字符串中搜索值并转换值
我有一个 API 接受在进入服务器之前需要正确格式化的字符串。
进入服务器的格式如下
客户可能发送的几种可能性:
转换用户输入后的几个有效示例是:
转换器将输入排列成正确的顺序。hrs 总是以句点结尾并在句子外重新排列 ({Month Year}),如图所示。
到目前为止我有
这是通过我需要重构.. +“”就像懒惰程序员的空守卫
php - 用于捕获字符串中的数字的正则表达式 (PHP)
我正在提取工作编号并将它们与 mysql 数据库中的数据进行匹配,然后检索匹配的数据。
如果我的工作编号是,123456
那么它匹配得很好,我得到了结果。有些是123-456
有些是12-text
有些是12-text-345
我尝试匹配变量,但那是无效的。我尝试在 PHPMyAdmin 中更改 SQL,但它甚至无法顺利运行。我用谷歌搜索并认为我应该使用 RegExp。我试过了。我可以添加一个斜线并使其适用于单个项目,但是,我不知道连字符在大量数组中的位置。它可能是第三个或第四个字符。我尝试了 pregmatch,但我认为我不知道我在做什么。我正在寻找几行代码来分析 PHP 变量并检测和转义任何元字符(如果有的话)。教程链接也可以,我很感激任何帮助
regex - 在 Notepad++ 中通过正则表达式匹配单行注释
为什么这两个正则表达式在 Notepad++ 中产生不同的结果?
背景
我正在用 Perl 为 Delphi 编写一个原始词法分析器。目的是提取词(标识符和关键字),因此不需要正确识别各种标记。
它的核心是以下正则表达式:
\{[^}]*\}|\(\*([^*]|\*[^\\])*?\*\)|[A-Za-z_]\w*|\d+|//.*?$|'([^']|'')*?'|\s+|.
我偶然发现行尾没有被行注释占用。所以我很好奇我是否可以修改正则表达式,以便完全由行注释组成的两个连续行被计为 2 个“令牌”。
我用这个正则表达式替换//.*?$
了//.*?\n
直接放在 EOF 之前的行注释(没有换行符)将不匹配,而是将其分解为/
,/
依此类推。所以我寻找正确的方式来正确表达交替。我发现两个在 Notepad++ 和 winGrep 中表现不同但在 Perl 中相同的正则表达式:
介绍性问题中已经显示了实际差异:
\{[^}]*\}|\(\*([^*]|\*[^\\])*?\*\)|[A-Za-z_]\w*|\d+|//.*?\n|//.*?$|'([^']|'')*?'|\s+|.
(上述示例源中有 2 个匹配项)\{[^}]*\}|\(\*([^*]|\*[^\\])*?\*\)|[A-Za-z_]\w*|\d+|//.*?(?:\n|$)|'([^']|'')*?'|\s+|.
(上述示例源中的 3 个匹配项)
可以在 Notepad++(7.7.1 32 位)和 grepWin(1.9.2 64 位)中观察到。在 Perl 中,我将正则表达式放在 和 之间m@(
,)@mg
两者都有 2 个匹配项。
python - Python Regex:在某些条件下删除数字的替代方法
值得注意的是,正则表达式引擎一旦找到匹配项就会停止急切地搜索。然后,订单在某些情况下很重要,因为它不会继续检查交替中的剩余选项。
此正则表达式的目的是两个部分的复合:
- 删除字符串开头的数字,只要这些数字不在KINDER, SECONDARY, ELEMENTARY之前。这很简单,我们可以通过以下方式实现: /li>
- 将构成序数的数字和字母组合在一起(在此处解释)。举个例子,像
10 st
become这样的字符串10st
,但是像abcdefg238947 th
DO NOT change 这样的字符串。对应的正则表达式如下: 将这两个加在一起时会出现问题。我知道如果我首先设置第二条规则,那么引擎将成功并继续解析:
具有以下字符串,引擎应设置在一起1
和ST
。然后1ST
在 KINDER 之前拥有不应该匹配第二条规则,但事实并非如此:
更多示例:
如何在相同的正则表达式语句中将两个规则交替设置在一起,如果是序数,则优先将数字和字母放在一起,然后在开头检查数字?
我想要与以下相同的行为:
python - Python中的正则表达式:仅当不在列表中时将单词与数字分开(变量异常)
这个问题与这个有关。我想要变量异常,它可以接收字母数字变量列表或空值。
例如,我有一个虚拟函数,它返回可能的字母数字值,这些字母和数字必须保持在一起:
此外,我还有以下主要功能来获取那些不必分开的可能的字母数字值。如果文本变量(输入)在异常中有一个字母数字单词,那么这将不会被分隔,否则会添加空格:
但是,当 exception_rx 为空时,我会在每个字母之间留出空格:
是否可以在不包含任何 if 语句而仅使用正则表达式语法的情况下处理这种情况?
谢谢你的帮助
python - 正则表达式:交流发电机订单问题
在正则表达式中使用交替时,我们应该在交替器中包含项目,以避免受到引擎急切的影响。
然后,如果有一个列表,co,co.,co-op,association,assoc
我们应该更喜欢包含它们以获得最精确的匹配。然后,这应该更改为association,assoc,co-op,co.,co
.
如果包含连字符或斜杠,我有一个基本的正则表达式模式将一个单词分成两部分,所以我只得到连字符或斜杠之前的部分:
但是,此正则表达式在提供ABC CO-OP ELEMENTARY SCHOOL
. 这个字符串正在变得公正ABC CO
。但是,如果我从交流发电机中移除 CO,则字符串会以其正确的原始形式返回ABC CO-OP ELEMENTARY SCHOOL
。另外,字符串ARMSTRONG CO-OP ELEMENTARY SCHOOL / ECOLE PRIMAIRE ARMSTRONG COOPERATIVE
要断成ARMSTRONG CO-OP ELEMENTARY SCHOOL
没有斜线后的字符串。
为什么CO
在交流发电机中匹配并用于断弦?
python - 如何在带有交替的正则表达式中获取匹配的单词?
在python中,假设我想搜索字符串
对于模式的出现
我目前会这样做:
上面返回一个匹配对象,我可以从中检索字符串中匹配项的开始和结束索引,在本例中为 0 和 3。
我的问题是:如何检索与匹配的正则表达式中的特定单词
换句话说:我想得到“1.*”和“.23”。这可能吗?