久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

java正則表達式中環視的簡單應用代碼示例

來源:技術員聯盟┆發布時間:2017-10-02 12:38┆點擊:

由于開發工作需要對文本中內容進行過濾,刪除或替換掉一些無用的或不符合要求的信息。于是發現一個問題,某一類工程性文本中,用到很多英文寫法相同、但含義不同的單位,需要將其分別轉為真實含義對應的漢字。比如:"粘度為17s,移動距離為350厘米,要求混凝土必須內實外光。振搗時間為30s。",很明顯第一個s是粘度的單位,第二s是時間單位,現在需要將文本中所有表示時間的s替換為“秒”,在朋友指引下,發現通過正則表達式中的環視可以方便實現這功能。

正則表達式中的環視,大家公認的基本原理是依據位置信息來進行匹配。我認為,還可以把它理解為依據目標字符的上下文進行匹配。

具體的Java代碼如下

package ccnu; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class regex { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String tempHtmlString="粘度為17s,移動距離為350厘米,要求混凝土必須內實外光。振搗時間為30s。"; Pattern p_html; Matcher m_html; String regEx = "([^粘度][u4e00-u9fa5]{1,10}(?<=[0-9]))s([^a-z]$)"; p_html = Pattern.compile(regEx); m_html = p_html.matcher(tempHtmlString); String resultString=""; try { resultString = m_html.replaceAll("$1秒"); } catch (PatternSyntaxException ex) { // Syntax error in the regular expression } catch (IllegalArgumentException ex) { // Syntax error in the replacement text (unescaped $ signs?) } catch (IndexOutOfBoundsException ex) { // Non-existent backreference used the replacement text } System.out.println(resultString); } }