我有这个字符串来解析并提取<>:
之间的所有元素String text = "test user #myhashtag <@C5712|user_name_toto> <@U433|user_hola>";
我试过这种模式,但它不起作用(没有结果):
String pattern = "<@[C,U][0-9]+\\|[.]+>";
所以在这个例子中我想提取:
<@C5712|user_name_toto>
<@U433|user_hola>
然后对于每一个,我想提取:
C
或U
元素5712
或433
)user_name_toto
)非常感谢你们
答案 0 :(得分:4)
您可以在括号内定义编号组:(partOfThePattern)
。
从Java 7开始,您还可以按如下方式定义命名组:(?<theName>partOfThePattern)
。
[.]
对应于文字点,而不是“任何字符”通配符。 以下是修复所有内容的独立示例:
String text = "test user #myhashtag <@C5712|user_name_toto> <@U433|user_hola>";
// | starting <@
// | | group 1: any 1 char
// | | | group 2: 1+ digits
// | | | | escaped "|"
// | | | | | group 3: 1+ non-">" chars, greedy
// | | | | | | closing >
// | | | | | |
Pattern p = Pattern.compile("<@(.)(\\d+)\\|([^>]+))>");
Matcher m = p.matcher(text);
while (m.find()) {
System.out.printf(
"C or U? %s%nUser ID: %s%nUsername: %s%n",
m.group(1), m.group(2), m.group(3)
);
}
<强>输出强>
C or U? C
User ID: 5712
Username: user_name_toto
C or U? U
User ID: 433
Username: user_hola
注意强>
我在这里没有验证C
vs U
(给你另一个.
示例)。
如果您只有(.)
,则可以轻松将(C|U)
替换为([CU])
。您也可以使用 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
// Make it available in the gallery
try
{
Intent mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile);
Uri contentUri = Uri.FromFile(App._file);
mediaScanIntent.SetData(contentUri);
SendBroadcast(mediaScanIntent);
// Display in ImageView. We will resize the bitmap to fit the display.
// Loading the full sized image will consume to much memory
// and cause the application to crash.
int height = Resources.DisplayMetrics.HeightPixels;
int width = imageView.Height;
App.bitmap = App._file.Path.LoadAndResizeBitmap(width, height);
if (App.bitmap != null)
{
imageView.SetImageBitmap(App.bitmap);
App.bitmap = null;
}
// Dispose of the Java side bitmap.
GC.Collect();
}
catch
{
}
try
{
if (resultCode == Result.Ok)
{
var imageView =
FindViewById<ImageView>(Resource.Id.imageView1);
imageView.SetImageURI(data.Data);
}
}
catch {
}
}
。
答案 1 :(得分:1)
<@([CU])(\d{4})\|(\w+)>
其中:
$ 1 - &gt; C / U
$ 2 - &gt; 433分之5712
$ 3 - &gt; user_name_toto / user_hola