Java中正则表达式如何实现从右往左匹配?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中正则表达式如何实现从右往左匹配?相关的知识,希望对你有一定的参考价值。
如:美国/n 正/d 全力/d 说服/v 中国/n 进一步/d 执行/v 必要/a 的/u 经济/n 改革/v 与/c 环境/n 保护/v 工作/v 。/w
想找到“改革/v”左边字符串的最后一个“/n”,即左边最邻近的一个。
如果不用正则表达式,就用int i = str.lastIndexOf("/n");能找出位置来
如果用正则表达式,就用"(/n)(?=(^/n)*)"意思就是匹配后面再没有/n的/n 参考技术A 我觉得你应该换个思路,你把源字符串和要匹配的字符串都反转一下,然后再检索,不就满足你的要求了吗。写程序很多时候都是采用迂回战术的。祝你好运 参考技术B String subjectString=new String("0.0.0.0 0.255.255.255 CHINA 中国1");
String resultString = null;
try
Pattern regex = Pattern.compile("(\\d) ");
Matcher regexMatcher = regex.matcher(subjectString);
try
resultString = regexMatcher.replaceAll("$1,");
catch (IllegalArgumentException ex)
// Syntax error in the replacement text (unescaped $ signs?)
catch (IndexOutOfBoundsException ex)
// Non-existent backreference used the replacement text
catch (PatternSyntaxException ex)
// Syntax error in the regular expression
参考技术C (/n).*?改革/v
括号捕获后该咋咋的。
或者,正则表达式有个修饰符是从右往左匹配的,不清楚JAVA支不支持
Leetcode练习(Python):栈类:第103题:二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
题目:
二叉树的锯齿形层次遍历:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
思路:
使用层序遍历的思路,但是没有用到栈。
程序:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]: if not root: return [] result = [] current_level = [root] index = 0 while current_level: auxiliary = [] next_level = [] for node in current_level: auxiliary.append(node.val) if node.left: next_level.append(node.left) if node.right: next_level.append(node.right) if index % 2 == 1: result.append(auxiliary[::-1]) if index % 2 == 0: result.append(auxiliary) index += 1 current_level = next_level return result
以上是关于Java中正则表达式如何实现从右往左匹配?的主要内容,如果未能解决你的问题,请参考以下文章