Regex-去掉第一个和第二个正斜杠之间的文本
Regex - strip out text between first and second forward slashes
我几乎已经让这个正则表达式工作了,但前导正斜杠有问题——有人能看到我哪里出了问题吗?我只想从这个示例中提取第一个字符串"projects
"
/projects/personal/29/56
另请参阅此处->http://regexr.com?300av
最简单的方法是使用正斜杠拆分字符串
var firstString = url.split('/')[1];
您将获得第一个字符串,但如果您想使用regext进行提取,请记住不要在regex中添加全局参数。
'/([a-zA-Z0-9]{0,})
我希望这能帮助
似乎可以使用split进行测试,但对于纯正则表达式解决方案,请使用:
s = '/projects/personal/29/56';
arr = s.match(/^'/([^/]*)'//); // arr[1] becomes 'project'
document.writeln('<pre>Matched: [' + arr[1] + "]</pre>");
我试着从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的要求:
- 删除第一个斜线
/
- 从
/projects/personal/29/56
中提取第一个字符串projects
为寻找此类答案的人添加。除了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
我在这里添加答案,只是因为我想将其添加到[SO]:Python:返回//regex之间的字符串,而这个问题被标记为这个问题的dup(!!!当我编辑时!!)。
脚本.py:
#!/usr/bin/env python3
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()
备注:
- 模式似乎很复杂,但我会尽力解释:
- 1stchar(^)标记字符串的开始
- 以下[]与字符类匹配:内容(^/)告诉它匹配任何字符,但/
- 接下来,*告诉前一组(#2。[/strong>)可能发生0次或更多次
- 然后它跟随/字符,这是我们的1st(开始)保护
- 括号()表示组匹配-稍后可以通过其名称引用(between_splash)。有关更多详细信息,请查看[Python3.Docs]:正则表达式语法(搜索
(?P<name>...)
) - 括号之间的内容(在之后)是我们正在寻找的内容(我们已经知道了):0个或更多非/字符s
- 下一个/char是我们的2nd(端)防护
- 然后,.*告诉:任意字符,0次或更多次
- 最后,$标记字符串的末尾
- 除了问题中提供的字符串之外,我还随意添加了更多要搜索的字符串,以说明一些角落的情况
- 使用Python 3和Python 2运行
输出:
c:'Work'Dev'StackOverflow'q45985002>"c:'Install'x64'Python'Python'3.5'python.exe" script.py 0: "en/lemon_peel/n/" - "lemon_peel" 1: "ca/llimona/n/" - "llimona" 2: "/asd /" - "asd " 3: "/asd" 4: "asdf/" 5: "aa//vv" - ""
在JS RegEx中,您可以使用:
'B'/([a-zA-Z0-9-]{0,})'S
相关文章:
- 浏览器之间的文本区域更新方式不同
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 使用javascript获取标记之间的文本
- 谷歌应用程序在两个标签之间编写目标文本
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 如何使用JavaScript Regex替换字符串中双引号之间的文本
- 使用 JavaScript 中的正则表达式替换大文本中两个字符之间的每个出现的字符串
- j查询在多个文本框之间指定
- 在<选项>标签之间切换时保存输入文本
- 文本未在边框之间居中
- 阅读标签之间的文本
- 在jQuery或JavaScript中获取两个字符串之间的文本
- 循环字符串以查找字符集之间的文本
- 如何使用javascript将文本框中的值限制为1-999之间的值范围
- 使用javascript接受1-999之间的值的文本框
- 在javascript中使用regex只选择标记之间的文本
- 获取javascript中以a到Z之间的特定字符开头的第一个文本的位置
- 需要正则表达式使文本在*bold之间
- 如何获取两个容器之间的文本
- 如何获取javascript中两个文本框之间的天数