我希望匹配所有出现的" 1x"和" 2x"与另一个非捕获组合组合(" WordX")。这是我到目前为止所做的,但它只匹配最后一次" 2x":
SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
JavaPairRDD<Integer,String> rdd= new JavaSparkContext(spark.sparkContext()).parallelizePairs(
Arrays.asList(new Tuple2[]{
new Tuple2<Integer,String>(1,"<xml>Stanford University is located in California. " +
"It is a great university.</xml>")}));
Dataset<Row> ds = spark.createDataFrame(rdd.rdd(),Type.class);
// steps to implement nlp ?
测试字符串:
^.*(?:Word1|Word2|Word3)*(1x|2x)
https://regex101.com/r/zxfAB7/1
非常感谢任何帮助。
答案 0 :(得分:1)
要匹配非捕获组之后出现的所有1x/2x
,您可以在此处使用边界锚\G
:
(?:(?:Word1|Word2|Word3)+|(?<!^)\G).*?(1x|2x)
\G
在上一场比赛结束或第一场比赛的字符串开头处断言位置。
答案 1 :(得分:0)
preg_match + preg_match_all 提取项目(1x
或2x
)的解决方案{1}}发生:
Word[123]
输出:
$s = "Foo Foo Word1: bar 1x foobar 1x foo 2x bar";
$result = false;
if (preg_match('/^.*(?:Word[123]).*(1x|2x)/', $s)) {
preg_match_all('/1x|2x/', preg_replace('/^.*Word[123]/', '', $s), $m);
$result = $m[0];
}
print_r($result);