我有格式为
的字符串protected void onServiceConnected() {
super.onServiceConnected();
FingerprintGestureController gestureController = getFingerprintGestureController();
Log.e(TAG, "Is available: " + gestureController.isGestureDetectionAvailable());
FingerprintGestureController.FingerprintGestureCallback callback = new
FingerprintGestureController.FingerprintGestureCallback() {
public void onGestureDetectionAvailabilityChanged(boolean available) {
super.onGestureDetectionAvailabilityChanged(available);
Log.d(TAG, "onGestureDetectionAvailabilityChanged " + available);
}
public void onGestureDetected(int gesture) {
switch (gesture) {
case FINGERPRINT_GESTURE_SWIPE_UP:
scrollDown();
break;
case FINGERPRINT_GESTURE_SWIPE_DOWN:
scrollUp();
break;
case FINGERPRINT_GESTURE_SWIPE_RIGHT:
execute_swipe_right_functionality();
break;
case FINGERPRINT_GESTURE_SWIPE_LEFT:
execute_swipe_left_functionality();
break;
default:
Log.e("My Service",
"Error: Unknown gesture type detected!");
break;
}
}
};
gestureController.registerFingerprintGestureCallback(callback, new Handler());
}
我需要用正则表达式替换PATH_VARIABLE,以便它使我可以在分隔符之间匹配任何内容,或者在末尾不进行任何匹配,这样当我将正则表达式字符串与输入字符串匹配时,我就可以完全匹配
/person/PATH_VARIABLE/address/PATH_VARIABLE
/person/PATH_VARIABLE/PATH_VARIABLE
/person/PATH_VARIABLE/address
.....
etc
我尝试了一些事情
/person/abc/address/xy123 matches with the first
/person/abc/1233 matches with the second
答案 0 :(得分:1)
您正在使正则表达式复杂化,以替换为“ PATH_VARIABLE”。它可以像[^/]*
一样简单-每个不是/
的字符。
y = y.replaceAll("PATH_VARIABLE", "[^/]*");
y1 = y1.replaceAll("PATH_VARIABLE", "[^/]*");
但是,这仅在路径的其余部分不包含在正则表达式中具有特殊含义的字符时才有效。在您显示的特定情况下,它没有此类字符。
如果您的路径中确实包含类似的字符,那么您需要将PATH_VARIABLE
和\Q
中除\E
以外的所有内容包装起来,以便按字面意义对待它们。
例如,/person+hello/PATH_VARIABLE/address/PATH_VARIABLE
首先需要成为这样:
\Q/person+hello/\EPATH_VARIABLE\Q/address/\EPATH_VARIABLE
,然后您可以替换PATH_VARIABLE
。
您可以通过找到所有\Q
的开始和结束索引并将其插入来添加\E
和PATH_VARIABLE
。