- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些这样的字符串
my {test} value
my { test } value
my { test } value
我需要创建一个正则表达式来获取 {}
中的所有内容没有空格。
下一个模式(?<=\{)\s*[a-zA-Z]+\s*(?=})
我得到大括号的内容,但有空格
如果我输入 \s*
像这样积极向前看(?<=\{\s*)[a-zA-Z]+(?=\s*})
我看到下一个错误
Unable to execute regular expression. java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 8 (?<={\s*)[a-zA-Z]+(?=\s*}) ^
没有 trim()
是否有可能实现这一点?每个正则表达式匹配?
最佳答案
你不需要向前看或向后看。像这样简单的正则表达式就足够了,
\{\s*(.*?)\s*\}
演示, https://regex101.com/r/REDmDT/2 (包括更多示例字符串)
就像你说的,“我需要创建一个正则表达式,将所有内容放入 {} 而没有空格”
此正则表达式为您提供花括号内的所有内容,同时排除右/左空格并保留内部的任何空格。
这是一个 java 代码,演示了相同的内容。
public static void main(String[] args) throws IOException {
List<String> list = Arrays.asList("my {test} value", "my { test } value", "my { test } value",
"my { test hello I am } value", "my { testing 10 times } value");
Pattern p = Pattern.compile("\\{\\s*(.*?)\\s*\\}");
list.forEach(x -> {
Matcher m = p.matcher(x);
if (m.find()) {
System.out.println(x + " --> " + m.group(1));
}
});
}
这个输出,
my {test} value --> test
my { test } value --> test
my { test } value --> test
my { test hello I am } value --> test hello I am
my { testing 10 times } value --> testing 10 times
关于Java 正则表达式 : multiple matches in positive lookahead and lookbehind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52956712/
我有如下字符串: val:key 我可以使用 /^\w*/ 捕获“val”。 我现在如何获取“key”而不“:”符号? 谢谢 最佳答案 这个怎么样? /^(\w+):(\w+)$/ 或者,如果您只想捕
再次搜索相同模式时是否可以使用正则表达式找到重叠匹配项?我希望能够找到出现三次的匹配项。例如,bababa 在 babababab 中出现了 3 次: 巴巴布巴巴布 babababab 爸爸爸爸 这是
我正在尝试提出正则表达式 block ,该 block 将使用 JavaScript 从 cucumber 样本中提取表。 cucumber 样本如下 Feature: Sample Feature
这个问题已经有答案了: Reference - What does this regex mean? (1 个回答) 已关闭 7 年前。 我了解到lookahead正则表达式是这样的x(?=y)和意味
我的解析器生成器(使用 javaCC)有问题 我有这个错误: Warning: Choice conflict involving two expansions at line 119, c
我正在编写一个小型java程序来进行一些数据库清理,当它们与某些关键字出现在同一个句子中时,我需要从大文本 block 中提取日期,并且我遇到了一些奇怪的行为想不通。例如,以下正则表达式: "(?=.
我需要使用正则表达式来匹配一个字符串 holiding html 以拉出所有嵌套的跨度,我假设我假设有一种方法可以使用正则表达式来执行此操作,但整个上午都没有成功。 所以对于示例输入字符串
我最近开始研究使用 javacc 的语法分析器,其中一个字段是选项 one...我有如下代码: options { LOOKAHEAD=1; } PARSER_BEGIN(Calculator)
我无法将此正则表达式转换为 Golang 支持的内容。我能得到一些帮助吗?它最初来自 this SO question . ^(?=.{1,24}$)(?![_.])(?!.*[_.]{2})[a-z
我正在尝试制作两个匹配 URI 的正则表达式。这些 URI 的格式为:/foo/someVariableData 和 /foo/someVariableData/bar/someOtherVariab
我刚刚更详细地了解了这两个概念。我一直对 RegEx 很好,似乎我从未见过这 2 个零宽度断言的必要性。 我很确定我错了,但我不明白为什么需要这些结构。考虑这个例子: Match a 'q' whic
让我留下以下字符串列表,在 JavaScript (NodeJS) 中,我想一次应用一个正则表达式并替换 . 和 . 之间的哈希值,但我不想替换这个词,.style。或 .bundle. 或 .chu
我有以下正则表达式来验证字符串中的条件,我在在线正则表达式 validator 上编写了它,但是当我在 Java 代码中使用它时出现异常: "(^([a-z]{1,6})(?(?=(_))(([_])
我很难搞清楚如何识别某些文本,前提是它之前和之后都有特定的东西。任务是识别 AND、OR 和 NOT,但如果它们是单词的一部分则不是: 他们应该在这里被识别: x AND y (x)AND(y) NO
我有一串以逗号分隔的字符,需要拆分。不过,其中一些字符可能是逗号。例如: test = "a,b,c,d,,,e,f,g" 我知道(?
我正在尝试匹配 Java 中没有 .jsp/.jspx 扩展名的字符串,并且在负向先行模式方面遇到了很多困难。 给定一堆字符串: String string1 = "templateName"; St
我有以下TT.jj,如果我取消注释下面的SomethingElse部分,它会成功解析create create blahblah形式的语言> 或创建废话。但是,如果我注释掉下面的 SomethingE
我想创建一个可以识别字符串中的等号的正则表达式。唯一的条件是等号前面不能有以下字符:“”、“~”和“=”。它后面也不能跟这个字符“=”。我使用的正则表达式语句是这样的:(?~=])=(?=[^=])并
这应该很简单,但我是菜鸟,我一辈子也搞不懂。我正在尝试使用正则表达式来匹配特殊打开/关闭标签内的文本:[p2][/p2] 所以在这段文字中: apple [p2]banana[/p2] grape [
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!