问题描述
所以,我已经将我的数据转换为带有 talend 的 hive。
我运行了一些正则表达式。其中之一是这样的。
KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*
KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*DDT*
KRW3TR.899877.GR0054656*DR.798012...2..............GR0054656*EUR*CCT*
我想做的是得到最后一个序列:DDT
CCT
(从这些例子中你知道最后一个序列有时会出现)
我从 map reduce 得到错误:
Caused by: org.apache.hadoop.hive.ql.Metadata.HiveException: Unable to execute method public java.lang.String org.apache.hadoop.hive.ql.udf.UDFregexpExtract.evaluate(java.lang.String,java.lang.String,java.lang.Integer) on object org.apache.hadoop.hive.ql.udf.UDFregexpExtract@a22c4d8 of class org.apache.hadoop.hive.ql.udf.UDFregexpExtract with arguments
另一个是:
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.util.regex.PatternSyntaxException: Dangling Meta character '*' near index 9
我使用这个正则表达式来提取这个:
REGEXP_EXTRACT(columnrr,'^(?:[^*]*\\*){3}([^*]*)',1) as TYPE
我的问题是: 他们有关系吗? DDT和CCT的出现有关系吗? 我的正则表达式应该如何?
谢谢。
解决方法
我找到了。 正则表达式中有保留字符。所以答案是:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var sourceProvider = radMultiColumnComboBox_Part.ItemsSourceProvider as GridViewItemsSourceProvider;
var columns = sourceProvider.Columns;
foreach(var gridViewColumn in sourceProvider.Columns)
{
var binding = new Binding(DisplayMemberPath);
binding.Source = gridViewColumn.DataContext;
// there is no property DataMemberBinding.
BindingOperations.SetBinding(gridViewColumn,Telerik.Windows.Controls.GridViewColumn.DataContextProperty,binding);
}
}
相关问题:java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 +