[英]Regex to find words that start with a specific character
我試圖找到一個特定字符開頭的單詞,如:
Lorem ipsum #text Second lorem ipsum。 你好嗎。 沒關系。 完成。 現在#else。
我需要用“#”開頭所有單詞。 所以我的預期結果是#text,#are,#else
有任何想法嗎?
搜索:
試試這個:
/(?<!\w)#\w+/
或者在C#中它看起來像這樣:
string s = "Lorem ipsum #text Second lorem ipsum. How #are You. It's ok. Done. Something #else now.";
foreach (Match match in Regex.Matches(s, @"(?<!\w)#\w+"))
{
Console.WriteLine(match.Value);
}
輸出:
#text
#are
#else
試試這個#(\\S+)\\s?
在空格或行的開頭后匹配以#開頭的單詞。 根據您的使用情況,不需要最后一個單詞邊界。
/(?:^|\s)\#(\w+)\b/
括號將在組中捕獲您的單詞。 現在,它取決於您如何應用此正則表達式的語言。
(?:...)
是非捕獲組。
為了適應不同的語言,我有這個(PCRE / PHP):
'~(?<!\p{Latin})#(\p{Latin}+)~u'
要么
$language = 'ex. get form value';
'~(?<!\p{' . $language . '})#(\p{' . $language . '}+)~u'
或循環使用多個腳本
$languages = $languageArray;
$replacePattern = [];
foreach ($languages as $language) {
$replacePattern[] = '~(?<!\p{' . $language . '})#(\p{' . $language . '}+)~u';
}
$replacement = '<html>$1</html>';
$replaceText = preg_replace($replacePattern, $replacement, $text);
\\w
效果很好,但據我所見,僅適用於拉丁文字。
在上面的例子中切換Latin
為Cyrillic
或Phoenician
。
上面的示例不適用於'RTL'腳本。
以下代碼應解決此案。
/\\$(\\w)+/g
搜索以$
開頭的單詞 /#(\\w)+/g
搜索以#
開頭的單詞 Mark RegExr.com
給出的答案/(?<!\\w)#\\w+/
在RegExr.com
網站上發出如下警告
"(?<!" The "negative lookbehind" feature may not be supported in all browsers.
可以通過刪除>
將警告更改為(?!\\w)@\\w+
來修復警告
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.