亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

特殊字符串的正則表達式設計

特殊字符串的正則表達式設計

慕娘9325324 2022-10-12 10:17:06
無法為以單引號或雙引號開頭?和結尾的字符串實現正則表達式。;例如:?abcdef;'?abcdef;'"?abcdef;" 我嘗試了很多,像這樣"^\\?([^;]+)\\;$",但沒有奏效。測試代碼片段:import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexTest {    public static void main(final String[] args) {        final String text = "This is param-start ?abcdef; param-end";        final String patternString = "(['\"]?)\\?.*;\\1";        final Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);        final Matcher matcher = pattern.matcher(text);        System.out.println("lookingAt = " + matcher.lookingAt());        System.out.println("matches   = " + matcher.matches());    }}
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

你可以使用這個正則表達式:

(["']?)\?.*;\1

對于 Java 使用:

final String pattern = "(['\"]?)\\?.*;\\1";

正則表達式演示

  • (["']?)匹配一個可選 '的或"并在組 #1 中捕獲

  • \1是與組 #1 中相同值的反向引用


查看完整回答
反對 回復 2022-10-12
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您可以使用


final String text = "This is param-start ?abcdef; param-end";

final String patternString = "(['\"]?)\\?.*?;\\1";

final Pattern pattern = Pattern.compile(patternString, Pattern.DOTALL);

final Matcher matcher = pattern.matcher(text);

while (matcher.find()) {

    System.out.println("Match found: " + matcher.group());

}

// => Match found: = ?abcdef;

請參閱Java 演示正則表達式演示。正則圖:


http://img1.sycdn.imooc.com//634623c900012c2406680142.jpg

備注

  • while (matcher.find())- 遍歷字符串中的所有潛在匹配

  • matcher.group()- 訪問匹配值。

正則表達式

  • (['"]?)- 捕獲組 1:要么'"

  • \?- 一個?字符

  • .*?- 任何 0+ 字符,盡可能少(模式用 編譯Pattern.DOTALL,因此它也將匹配換行符)

  • ;- 一個分號

  • \1- 與第 1 組中捕獲的值相同。


查看完整回答
反對 回復 2022-10-12
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

您的描述聲明“以 ? 開頭并以 ; 結尾”,但您的示例字符串不以分號結尾 - 它以雙引號結尾。

如果要允許字符串以單引號或雙引號開頭或結尾,則匹配應為: ^['"]?\?[^;]+;\['"]?$


查看完整回答
反對 回復 2022-10-12
  • 3 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號