我需要一个正则表达式,匹配所有被<@包围的数字!或<@和>。匹配项不能跟在奇数个反斜杠后面,但可以跟在零或偶数个反斜杠后面。
目前,我有以下regex:
(?<!\\)(?:\\{2})*(<@!|<@)[0-9]+>
问题是匹配包括反斜杠,我需要一个不包括反斜杠的正则表达式。
有人能做一个能完成这一点的正则表达式吗?
有效输入字符串:<@123>测试<@456>
匹配:<@123>,<@456>
无效的输入字符串:\<@123>test\\\<@456>
匹配:无
可以使用(?<!\\)(?:\\\\)*(<@!?\d+>)
regex捕获所需的子字符串。请参见regex演示。
模式中的(<@!<@)
部分与<@!
或<@
匹配,差异仅在!
字符中。因此,将其替换为与<@
匹配的简单<@!?
模式和可选的!
字符是合乎逻辑的。然后,捕获整个(<@!?\d+>
部分,并用Java代码获取它。
请参见Java演示:
import java.util.*;
import java.util.stream.*;
import java.util.regex.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String s = "1) \\\\<@!1123> 2) \\\\\\<@!2123> 3) <@3123>test<@3456> 4) \\<@4123>test\\\\\\<@4456>";
Pattern pattern = Pattern.compile("(?<!\\\\)(?:\\\\\\\\)*(<@!?\\d+>)");
for (String t: pattern.matcher(s).results().flatMap(g -> Stream.of(g.group(1))).toArray(String[]::new)) {
System.out.println(t);
}
}
}
<@!1123>
<@3123>
<@3456>
问题内容: 这是一个“到底发生了什么”的问题。我实际上不需要解决方案。 我必须用双反斜杠替换字符串中的所有单反斜杠。这就是我最终要做的… …其中strRootDirectory是上面的java.lang.String。 现在,我了解了第一个参数的四个反斜杠:regex期望两个反斜杠以表示单个文字反斜杠,而Java希望它们加倍。没关系。 但是,第二个参数的八个反斜杠到底是怎么回事?替换字符串不是应该
Markdown 可以利用反斜杠来插入一些在语法中有其它意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果(但不用 <em> 标签),你可以在星号的前面加上反斜杠: \*literal asterisks\* Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号: \ 反斜线 ` 反引号 * 星号 _ 底线 {} 花括号 [] 方括号 () 括
本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下
问题内容: 我有一个字符串“ \\ u003c”,它属于UTF-8字符集。由于存在双反斜杠,因此我无法将其解码为unicode。如何从“ \\ u003c”获取“ \ u003c”?我正在使用Java。 我尝试过 但无法实现我想要的。 这是我的代码 文件的内容是 \ u003c 问题答案: 不知道您是否仍在寻找解决问题的方法(因为您已经接受了答案),但是我仍然会添加我的答案作为针对 所述问题 的可
问题内容: 我正在尝试将转换为,但是我不断遇到各种错误。我认为这是解决方案: 但这给出了以下异常: 问题答案: 将该参数解释为正则表达式。该是转义字符都 和。你需要对正则表达式进行两次转义: 但是你不必为此使用正则表达式,仅是因为你希望逐个字符地进行精确替换,并且这里不需要模式。因此就足够了: 更新:根据注释,你似乎想在JavaScript上下文中使用字符串。你最好使用它来覆盖更多字符。
null Groovy:找不到四位十六进制字符代码