问题标签 [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.
java - 正则表达式操作的优先级
我编写了一些java代码将字符串拆分为字符串数组。首先,我使用正则表达式模式分割该字符串"\\,\\,|\\,"
,然后使用模式分割"\\,|\\,\\,"
。为什么第一个输出和第二个输出有区别?
使用时的输出regex1
:
使用时regex2
:
我需要一些解释正则表达式引擎在处理这种情况时是如何工作的。
ruby - 为什么不匹配交替中的更长令牌?
我使用的是 ruby 2.1,但同样的东西可以在 rubular 网站上复制。
如果这是我的字符串:
我用这个表达式做一个正则表达式匹配:
我期望获得更长的令牌作为匹配项。
相反,我得到了第二个交替作为匹配。
据我所知,当不是中文字符时,它确实可以这样工作。
如果这是我的字符串:
我使用这个正则表达式:
返回的匹配结果是foobar
。如果顺序是另一种方式,则匹配的字符串是foo
. 这对我来说很有意义。
regex - 正则表达式替换可选替换
我想让将 Objective-C 翻译成 Swift 的生活变得更轻松;我目前正在编写一个程序,它将匹配某些常用的构造(例如方法、属性和变量)并将它们替换为 Swift 版本。现在我正在尝试将方法名称前面的 +/- 替换为class
if+
或 nothing if -
。
我似乎无法找到如何使交替(\+|-)
被替换为class
或者基于选择。这在纯正则表达式中可能吗?还是我需要把它放在我的应用程序逻辑中?
编辑:预期的输入和输出:
- (void)composeView(...)
给func composeView(...)
+ (void)composeView(...)
给class func composeView(...)
python - 为什么第一个交替不匹配?
我有以下我不理解的正则表达式(Python)。为什么它也与第一个交替不匹配?
正则表达式(间隔以便更好地理解):
测试字符串:
asdasd $asd:sd + ${asd123:asd} $HOME $$asd
搭配的东西:
asdasd $asd:sd + ${asd123:asd} $HOME $$asd
根据上面的正则表达式模式,也应该出现第一个交替,即:
看来我不太明白交替模式?
java - 有什么方法可以使用带有两对不同分隔符的正则表达式?
我已经在我的 Android 应用程序中添加了表情符号,并且我一直在使用 Java 中的 Regex,因此分配给它们的代码将匹配正则表达式(其中包含一对要使用的分隔符),使字符显示为图片。
例如,一些表情符号代码是sad
、happy
、smile
。
到目前为止,它是这样的:
分隔符:
(
和)
正则表达式:
\\(([.[^\\(\\)]]+)\\)
匹配的表情符号代码示例:
(sad)
,(happy)
,(smile)
.
我注意到,对于我添加的一些新表情符号,用户使用另一对分隔符(如字母z
和,
. 那么,第二种情况是这样的:
分隔符:
z
和,
正则表达式:
z([.[^z\\,]]+)\\,
匹配的表情符号代码示例:
zsad,
,zhappy,
,zsmile,
.
那么,我想要的是合并这两个正则表达式,因此用户可以使用两对分隔符中的任何一个输入表情符号代码,无论他或她喜欢哪个,它都会被匹配。例如,悲伤的表情符号将被匹配,并且每次写为(sad)
or时它都会显示为图像zsad,
,例如:
你好。(伤心)我有坏消息。扎德,
嘿…… (伤心)
好的。再见。扎德,
我尝试过使用交替运算符和环视,但没有成功。在以下两个正则表达式中,我只匹配了|
交流发电机的左侧(当然,我希望左侧和右侧都匹配):
\\(([.[^\\(\\)]]+)\\)|z([.[^z\\,]]+)\\,
z([.[^z\\,]]+)\\,|\\(([.[^\\(\\)]]+)\\)
在以下正则表达式中,我根本没有匹配项:
(\\(([.[^\\(\\)]]+)\\)|z([.[^z\\,]]+)\\,)
,(\\(([.[^\\(\\)]]+)\\))|(z([.[^z\\,]]+)\\,)
(z([.[^z\\,]]+)\\,|\\(([.[^\\(\\)]]+)\\))
,(z([.[^z\\,]]+)\\,)|(\\(([.[^\\(\\)]]+)\\))
\\(|z([.[^\\(\\z\\,)]]+)\\)|\\,
,(\\(|z)([.[^\\(\\z\\,)]]+)(\\)|\\,)
(\\()|(z)([.[^\\(\\z\\,)]]+)(\\))|(\\,)
(?=\\(([.[^\\(\\)]]+)\\))(?=z([.[^z\\,]]+)\\,)
,(?=.*\\(([.[^\\(\\)]]+)\\))(?=.*z([.[^z\\,]]+)\\,)
对不起,我只想提供尽可能多的细节。有谁知道我在做什么或写错了,我可以使用什么正则表达式来匹配 zemojicode,
and (emojicode)
?您的帮助将不胜感激。
regex - 在正则表达式中使用交替时 Perl 未初始化的值
我有一个带有 if 语句的 for 循环,如下所示:
我收到一条错误消息,在 if 语句的行上显示“在模式匹配中使用 @array 中未初始化的值......”。
当我从该行的正则表达式中删除交替时,错误就消失了。如果我注释掉整个 if 语句,则注释“#Get rid of numbers at the end”下的正则表达式不会产生任何错误。
我已经打印出@array 的所有值,一切看起来都很好。我试过没有括号和括号,而不是表达式中的括号,没有任何变化。有什么想法可能导致这种情况吗?
javascript - 要么|要么是正则表达式的一部分,用于匹配两种可能性
我们有两种引用同一系统的方式:
- tr12345
- fr12345
现在我每个变体都有一个正则表达式,例如
/(?:^|^\s|[^\/a-zA-Z0-9])tr([0-9]+).*$/img
/(?:^|^\s|[^\/a-zA-Z0-9])fr([0-9]+).*$/img
这很好用,但我认为将两者结合起来会更有效。我从其他文章中看到,您可以使用交替|
来匹配变体。如果我要同时匹配两者,是否需要在“tr”之后重复正则表达式?例如,这样的事情可能吗?
示例输入 1:
tr12345
期望的输出1:
12345
示例输入 2:
fr123456
期望的输出2:
123456
我一直在这里玩它: https ://regex101.com/r/FUCmv0/2
python - Python 正则表达式:对带有分隔符的单词集使用交替
我想匹配一个字符串元素应该只包含特定字符的字符串:
- [A,C,K,M,F] 中的第一个字符
- 后跟一个数字(浮点数或整数)。允许的实例:1、2.5、3.6、9、0、6.3 等。
- 以任一罗马数字结尾 [I, II, III, IV, V]。
我提供的正则表达式如下
bool(re.match(r'(A|C|K|M|F){1}\d+\.?\d?(I|II|III|IV|V)$', test_str))
"(I|II|III|IV|V)"
部分将返回真,test_str='C5.3IV'
但我想让它成为真,即使两个罗马数字同时存在并带有分隔符,/
即正则表达式查询也应该返回真test_str='C5.3IV/V'
。
我应该如何修改正则表达式?
谢谢
string - 查找匹配正则表达式的最大输入字符串
给定一个正则表达式 re 和一个输入字符串 str,我想找到 str 的最大子字符串,它从匹配 re 的最小位置开始。
特例:
将 re 与 str 匹配应该返回匹配的字符串"abcbc"
(而不是"a"
像 PCRE 那样)。我还记得,如果交替的顺序发生变化,结果就是我想要的。
mysql - 具有匹配整个字符串的两个备选方案的备选组
我正在研究一个正则表达式,它仅在给定值为 A 或 B 的情况下返回 1。
我用了
'|' 符号的行为类似于“或”,但结果与 AB 不同:
虽然我预计这里没有比赛。