我有一个问题正则表达式匹配一个大写字母,后面跟一个小写字母。我希望在任何这样的比赛之后打破,但我似乎无法让它发挥作用。
为了使它更通用 - 我想在正则表达式中的任何匹配之前和之后进行拆分。
示例string "TeSTString"
通缉结果 - > [Te, S, T, St, ring]
我已经尝试过任何我能想到的东西,但是我被前瞻或后悔所欺骗。
首先我尝试了[A-Z][a-z]?
,这匹配完美,但将其删除......
结果 - > [ring]
在此之后我做了积极的预测(?=([A-Z][a-z]?))
给了我一些接近......
结果 - > [Te, S, T, String]
并且后视(<=?([A-Z][a-z]?))
完全没有任何内容......
结果 - &gt; [TeSTString]
甚至试图在绝望的尝试中扭转后视(<=?([a-z]?[A-Z]))
,但这是相当不成功的。
在我失去理智之前,任何人都可以在正确的方向上给出一个好的指针吗?
答案 0 :(得分:1)
这是一个与预期结果相符的复杂模式。
String test = "TeSTStringOne";
System.out.println(
Arrays.toString(
// | preceded by lowercase
// | | followed by uppercase
// | | | or
// | | || preceded and followed by uppercase
// | | || | or
// | | || || preceded by uc
// | | || || AND lowercase
test.split("(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z])|(?<=[A-Z][a-z])")
)
);
<强>输出强>
[Te, S, T, St, ring, On, e]
注意强>
将[a-z]
替换为\\p{Ll}
,将[A-Z]
替换为\\p{Lu}
以使用重音字母。
答案 1 :(得分:0)
尝试:
(?<=[A-Z][a-z])
(?=(?<!^)[A-Z])
=对于大写的正面观察,然后是
小写,this.updateCategory = function(_data){
$http.put("/domain/api/categories/"+_data.category_id, _data).success(function(res){
console.log("Got put method " + res);]
})
}
- 对于大写的正向前瞻,如果没有前面的行的开头,