java - 如何使用正则表达式匹配某类词前的所有内容

标签 java regex

我是正则表达式的新手。

是否可以匹配满足特定条件的单词之前的所有内容:

例如

这是一个测试 - -+++ 这是一个测试

我希望它遇到以大写字母开头且下一个字符为小写字母的单词。这构成了一个恰当的词。然后我想删除那个词之前的所有内容。

上面的例子应该产生:This is a test

我只想进行此处理,直到它找到合适的词然后停止。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

替换

^.*?(?=[A-Z][a-z])

为空字符串。这适用于 ASCII 输入。对于非 ASCII 输入(Unicode、其他语言),应用不同的策略。

解释

.*?    Everything, until
(?=    followed by
[A-Z]  one of A .. Z and
[a-z]  one of a .. z
)

启用 Java Unicode 的变体是这样的:

^.*?(?=\p{Lu}\p{Ll})

关于java - 如何使用正则表达式匹配某类词前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/559254/

相关文章:

java - 在 Angular 项目中显示 pom.xml 版本

java - 是否有可能在 javafx 中有一个透明的实用程序阶段?

java - 使用Python解决方案无法在JAVA中处理,因为执行速度慢

regex - Vim 正则表达式在行首匹配方括号失败

javascript - 使用正则表达式从字符串中提取单词

java - java 和 android 之间 java.util.regex.Matcher 中 usePattern() 的不同使得这个任务变得困难

java - 在 Android、Blackberry 中以编程方式更改手机的日期/时间设置?

具有内部类和内部接口(interface)的 Java 泛型

python - 如何让 PLY 忽略正则表达式的大小写?

javascript - 删除 jQuery 文本中 <> 之间的所有内容