我幾乎得到了這個正則表達式的工作,但是在前導斜槓上遇到問題 - 任何人都可以看到我在哪裏出錯?我只是想在這裏提取的第一個字符串在這個例子中,「項目」 - >http://regexr.com?300av正則表達式 - 去掉第一個和第二個正斜槓之間的文本
4
A
回答
18
最簡單的方法是使用正斜槓
var firstString = url.split('/')[1];
,你將有第一個字符串分割字符串,但如果你想要使用正則表達式提取比這將做,只要記住不要在您的正則表達式中添加全局參數。
\/([a-zA-Z0-9]{0,})
我希望這有助於
+1
\ /(\ w +)將會更加簡潔,但是拆分方法反正可能更好 – wheresrhys 2012-02-13 14:05:53
2
看來你可以使用分割得到您的測試,但對於純粹的正則表達式的解決方案使用:
s = '/projects/personal/29/56';
arr = s.match(/^\/([^/]*)\//); // arr[1] becomes 'project'
document.writeln('<pre>Matched: [' + arr[1] + "]</pre>");
2
我從anubhava答案發揮各地,並得到了以下
string expression returns
/projects/personal/29/56 ([a-zA-Z])([^/]*)\/ projects/
/projects/personal/29/56 ([a-zA-Z])([^/]*) projects
/projects123/personal/29/56 ([a-zA-Z])*?([a-zA-Z][0-9])([^/]*) projects123
第二行實現了什麼bsod99問:刪除第一個slah /
並從/projects/personal/29/56
提取第一個字符串projects
1
爲尋求這種答案的人添加內容。除了url'/ projects'的第一部分之外,您還可以嘗試添加全局標誌以獲取其他值。
/projects/personal/29/56
你只需要在最後遍歷數組目前[i]
/\/([a-zA-Z0-9]{0,})/g[i]
expression returns
i=0 /projects
i=1 /personal
i=2 /29
i=3 /56
0
我在這裏加入了答案,只是因爲我想將它添加到[SO]: Python: return a string between // regex [duplicate]和問題被標記爲(這是我在編輯時的!!!)。
代碼:
import re
def main():
group_name = "between_slashes"
words = [
"en/lemon_peel/n/",
"ca/llimona/n/",
"/asd /",
"/asd",
"asdf/",
"aa//vv",
]
pat = re.compile("^[^/]*/(?P<{}>[^/]*)/.*$".format(group_name))
for idx, word in enumerate(words):
match = pat.match(word)
if match is not None:
print("{}: \"{}\" - \"{}\"".format(idx, word, match.group(group_name)))
else:
print("{}: \"{}\"".format(idx, word))
if __name__ == "__main__":
main()
注意:
- 模式看起來很複雜,但我會盡我所能來解釋它:
- 的1 ST char(
^
)標誌着beginni字符串 - 以下
[]
的納克一個字符類匹配:(^/
)告訴它的任何字符,但/
- 接着匹配的內容時,
*
告訴前一組(2),可能會發生0以上倍 - 然後它遵循
/
字符這是我們的1 ST(開始)後衛 - 括號
()
表示一組匹配 - 這可以通過其名稱(between_slashes
)供以後引用。有關詳情,請[Python]: Regular Expression Syntax(搜索(?P<name>...)
) - 括號之間的內容(
>
後)我們正在尋找的東西(我們已經知道什麼):0或多個非/
字符 - 下
/
字符是我們的2 第二(結束)後衛 - 然後,
.*
告訴:任何字符,0次或多次 - 最後,
$
標記字符串的末尾
- 的1 ST char(
- 我把增加更多串的自由要搜索,除了在問題中提供的那些,說明了一些極端情況
- 運行於Python3和Python2
輸出:
c:\Work\Dev\StackOverflow\q45985002>c:\Install\x64\Python\Python\3.5\python.exe a.py 0: "en/lemon_peel/n/" - "lemon_peel" 1: "ca/llimona/n/" - "llimona" 2: "/asd /" - "asd " 3: "/asd" 4: "asdf/" 5: "aa//vv" - ""
相關問題
- 1. 正則表達式得到第一個反斜槓
- 2. PHP正則表達式 - 在斜槓之間獲取文本
- 3. 正則表達式和正斜槓
- 4. 正則表達式有3個斜槓
- 5. Javascript正則表達式:用一個斜槓替換多個正斜槓
- 6. 如何用正則表達式替換2個斜槓之間的文本?
- 7. 得到第三個正斜槓後面的字符(「/」) - 使用正則表達式
- 8. 正則表達式在URL中的斜槓後獲得第一個字
- 9. 正則表達式和反斜槓
- 10. 正則表達式查找第一個和第二個」 occurence在每一行
- 11. 正則表達式從URL的中間去掉文本
- 12. 匹配直到第一個正斜槓後面沒有斜槓
- 13. 正則表達式獲得第一個「空格」後的文本?
- 14. 第一個和最後一個名字的正則表達式
- 15. 做第一個字符小寫和空間正則表達式
- 16. 正則表達式:一個第一次出現和另一個
- 17. 訪問第一個第N個正則表達式組
- 18. PHP正則表達式無反斜槓
- 19. 正則表達式Python - 反斜槓
- 20. 第1個字符到第8個字符之間需要正則表達式
- 21. 如何在兩個EL表達式之間顯示反斜槓\而不會轉義第二個表達式?
- 22. 正則表達式 - 第一個隨機字符等於第二個字符。
- 23. 匹配到第二個正則表達式,如果第一個沒有匹配
- 24. php正則表達式匹配第一個和最後一個
- 25. 正則表達式:不是一個反斜槓或行啓動
- 26. 使用正則表達式跳過字符之間的第二個字符串
- 27. 正則表達式的第一個字母和三個數字
- 28. 正則表達式去掉圖像url?
- 29. 16位數和正斜槓的正則表達式?
- 30. 正則表達式和正斜槓加上URL中的字符
作爲練習,請張貼滿闕而不是顯示外部代碼。 – anubhava 2012-02-13 14:01:04
'^ \ /(。+)\ /.*$'並且獲得組1 – epoch 2012-02-13 14:04:23