我有一个问题我有这个句子例如:
(?i)\b(ca\.)\b
而我只想匹配单身“ca”。
我的RegEx就是这样:
testSource.replaceAll()
但这不起作用,我不知道为什么。有任何想法吗 ?
//更新
我最喜欢的是:
pattern.matcher(testSource).replaceAll().
和
partial class MyView : UIView
{
public MyView (IntPtr handle) : base (handle)
{
}
public static MyView Create()
{
var arr = NSBundle.MainBundle.LoadNib ("MyView", null, null);
var v = arr.GetItem<MyView>(0);
return v;
}
}
两个都不起作用。
答案 0 :(得分:3)
答案 1 :(得分:2)
您应该像这样使用它:
Pattern.compile("(?i)\\b(ca\\.)(?=\\W)").matcher(a).replaceAll("SOME TEXT");
如果省略java转义,则给出正则表达式:(?i)\b(ca\.)\W
。
普通正则表达式中的每个\
都必须在java中进行转义 - \\
。
此外,在单词之前有单词边界(\b
),但它仅适用于String中从空格到字母数字字符或其他方式的部分。但在你的情况下,你有一个点,这不是一个字母数字字符,所以你最后不能使用\b
。您可以使用\W
,这意味着点后面有一个非单词字符。但要使用\W
,您需要在捕获组中忽略它(因此不会被替换) - (?=
。
另一个问题是你使用.
,它匹配任何角色,但你实际上想要匹配真正的点,所以要做到这一点你必须逃避它 - \.
,在java String中变为\\.
。