我需要通过不在括号中的管道拆分文本。这是示例文本
I {need|want|{ask|prefer}} you to {help {Jason|Maria|Santa|{Lucia|Raul}'s father}|go to school}
我在这里找到了这个/\ |(?![^{]*})/g:regex,提取字符串,不要在两个括号之间
现在当我想用管子分割这部分字符串时
help {Jason|Maria|Santa|{Lucia|Raul}'s father}|go to school
它还选择杰森、玛丽亚和圣诞老人之间的管道,因为它们后面有一个开口支架。如果正则表达式不在任何括号中,如何将其更改为仅匹配管道。
测试字符串:
help {Jason|Maria|Santa|{Lucia|Raul}'s father}|go to school
应该返回
help {Jason|Maria|Santa|{Lucia|Raul}'s father}
go to school
.
Jason|Maria|Santa|{Lucia|Raul}'s father
应该返回
Jason
Maria
Santa
{Lucia|Raul}'s father
您可以使用SKIP-FAIL正则表达式:
'~(\{(?:[^{}]++|(?1))*})(*SKIP)(*F)|\|~'
查看正则表达式演示
细节
(\{(?:[^{}] |(? 1))*})(*SKIP)(*F)
-匹配平衡花括号之间的子字符串并跳过此匹配
(\{(?:[^{}] |(? 1))*})
-捕获组1匹配的{
,然后重复0次除{
和}
之外的1个字符,或者递归整个组1模式((?1)
是正则表达式子例程),然后}
(平衡花括号子字符串)(*SKIP)(*F)
-使正则表达式引擎匹配失败并跳过匹配文本以从匹配端继续匹配的PCRE动词PHP演示:
$re = '~(\{(?:[^{}]++|(?1))*})(*SKIP)(*F)|\|~';
$str = "Jason|Maria|Santa|{Lucia|Raul}'s father";
print_r( preg_split($re, $str) );
输出:
Array
(
[0] => Jason
[1] => Maria
[2] => Santa
[3] => {Lucia|Raul}'s father
)
问题内容: 我有类似的东西 商店 结束行像1商店..我想匹配,它使用python正则表达式。 我尝试了类似的方法, 但是没有用。 编辑:添加代码,我试过 请帮助。 谢谢吉乔 问题答案: 或多或少直接回复您的评论 尝试这个 解决方案是使用,而不是使用后者,因为后者试图将整个字符串与regexp匹配,而前者只是试图在字符串内部查找与表达式匹配的子字符串。
问题内容: 匹配字符串中的’(’的正则表达式是什么? 以下是场景: 我有一串 我想使用正则表达式拆分字符串。为此,我正在使用 但是我收到以下异常。 转义似乎不起作用。 问题答案: 两种选择: 首先,你可以使用转义 回 斜线- 另外,由于它是单个字符,因此您可以将其放入不需要转义的字符类中-
我试图匹配以下模式: 在这里,我使用以下正则表达式来匹配上述模式: 然而,我的模式不起作用。
问题内容: 我一直试图在Java中编写一个正则表达式以删除下面括号中的所有内容,同时保留其他所有内容。 注意,括号可以嵌套,这就是为什么我的模式失败的原因 。有人能帮我吗?下面我试过了: 但这打印: d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 OO 6. Be2 e5 7. dxe5 dxe5 8. Qxd8 Rxd8 9. Bg5 Nbd7 10. OO
问题内容: 当我使用某种方式时,它仍然会触发,好像连字符无效。我试着和 问题答案: 转义使用应该没问题,但是您也可以尝试将其放在字符类的开头或结尾。这应该为您工作:
本文向大家介绍使用JS正则表达式 替换括号,尖括号等,包括了使用JS正则表达式 替换括号,尖括号等的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇使用JS正则表达式 替换括号,尖括号等就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。