Regex phù hợp với mọi thứ sau dấu chấm hỏi?


125

Tôi có một nguồn cấp dữ liệu trong Yahoo Pipes và muốn khớp mọi thứ sau một dấu chấm hỏi.

Cho đến nay, tôi đã tìm ra cách đối sánh dấu hỏi bằng cách sử dụng ..

\?

Bây giờ chỉ để phù hợp với mọi thứ nằm sau / sau dấu chấm hỏi.


2
\?.*khớp với mọi thứ (bao gồm cả một chuỗi trống) sau ?.
khachik

Bạn đang sử dụng ngôn ngữ lập trình nào?
Mark Byers

1
Đối với những người sử dụng Java, nó"\\?"
CodyBugstein

Câu trả lời:


251
\?(.*)

Bạn muốn nội dung của nhóm chụp đầu tiên.


15
@ Đánh dấu nếu đây là điều bạn cần (mặc dù câu hỏi này đã cũ!), Vui lòng đánh dấu đây là câu trả lời.
Pieter VDE

5
@Dreamonic Đừng nghĩ nó đang xảy ra :(
Starkers 28/09/13

4
@Starkers Bạn nói đúng. Nó sẽ không xảy ra. Mark đã không tham gia kể từ đó Feb 5 '11 at 10:41. Vẫn tốt nếu chỉ ra mọi thay đổi mà chúng tôi nhận được. Có thể ai đó sẽ học hỏi từ Dreamonic chỉ ra điều này.
DutGRIFF

1
bạn sẽ nắm bắt nội dung như thế nào sau dấu chấm hỏi cuối cùng? tôi muốn 'neo' từ sau đó - tôi không chắc liệu neo có phải là từ phù hợp hay không.
BKSpurgeon

2
@BKSpurgeon nhóm chụp đầu tiên trong ^. * \? ([^?] *) $
Sẽ

61

Thử cái này:

\?(.*)

Các dấu ngoặc đơn là một nhóm thu thập mà bạn có thể sử dụng để trích xuất phần của chuỗi mà bạn quan tâm.

Nếu chuỗi có thể chứa các dòng mới, bạn có thể phải sử dụng công cụ sửa đổi "chấm tất cả" để cho phép dấu chấm khớp với ký tự dòng mới. Bạn có phải làm điều này hay không và làm như thế nào, phụ thuộc vào ngôn ngữ bạn đang sử dụng. Có vẻ như bạn đã quên đề cập đến ngôn ngữ lập trình bạn đang sử dụng trong câu hỏi của mình.

Một giải pháp thay thế khác mà bạn có thể sử dụng nếu ngôn ngữ của bạn hỗ trợ các xác nhận phía sau có chiều rộng cố định là:

(?<=\?).*

Oh chiều rộng cố định? Tôi có thể nhìn lại phía sau cho một cái gì đó như thế này? Chủ đề: mã, lập trình, thiết kế Vì vậy, tôi muốn chọn dấu hai chấm và nhìn phía sau bao xa T cpaital của chủ đề và chuyển tiếp đến cuối dòng? (trong trường hợp này, cuối dòng là "thiết kế".
Đánh dấu

@Mark: Bạn đang sử dụng ngôn ngữ nào?
Mark Byers

Tôi đang sử dụng Yahoo Pipes loại trừ regex. Tôi đã trả lời câu hỏi này và bây giờ đang tìm một regex chọn 6 ký tự phía sau dấu hai chấm và càng nhiều (tất cả) chuyển tiếp ..
Mark

@Mark: Tôi đã kiểm tra danh sách câu hỏi của bạn nhưng tôi không thấy câu hỏi mới của bạn. Bạn có chắc là bạn đã đăng nó?
Mark Byers

Tôi sẽ hỏi lại câu hỏi mới này trong ít phút nữa. Đoán rằng tốt nhất nên giữ các câu hỏi của tôi riêng biệt và thực sự nên hỏi cả hai cùng một lúc. Cảm ơn
Đánh dấu

36

Với kỹ thuật lookbehind tích cực :

(?<=\?).*

(Chúng tôi đang tìm kiếm một văn bản có dấu chấm hỏi ở đây)

Input: derpderp?mystring blahbeh
Output: mystring blahbeh

Thí dụ

Về cơ bản ?<=, cấu trúc này là một cấu trúc nhóm, yêu cầu dấu chấm hỏi thoát trước khi bất kỳ trận đấu nào có thể được thực hiện.

Chúng hoạt động thực sự tốt, nhưng không phải tất cả các triển khai đều hỗ trợ chúng.


13
\?(.*)$

Nếu bạn muốn so khớp tất cả các ký tự sau "?" bạn có thể sử dụng một nhóm để khớp với bất kỳ ký tự nào và tốt hơn bạn nên sử dụng ký hiệu "$" để biểu thị cuối dòng.


1
Trong hầu hết các triển khai biểu thức chính quy, .theo mặc định không khớp với ký tự dòng mới. Kết quả là, ngay cả khi không có ký tự cuối dòng trong biểu thức, nó sẽ khớp với cuối dòng.
Mark Byers

2

Kiểm tra trang web này: http://rubular.com/ Về cơ bản, trang web cho phép bạn nhập một số văn bản mẫu (những gì bạn sẽ tìm kiếm trên trang web của mình) và sau đó khi bạn xây dựng biểu thức chính quy, nó sẽ đánh dấu những gì đang được so khớp trong thời gian thực.


Nhờ vậy bạn có biết cách nối dấu hai chấm không? Và một số ký tự nhất định trước dấu hai chấm?
Đánh dấu

/([a-zA-Z]{4}):/sẽ khớp Test: Welcomevà lấyTest
Austin Lin

0

str.replace(/^.+?\"|^.|\".+/, '');

Điều này đôi khi không tốt khi sử dụng khi bạn muốn chọn nội dung khác cần xóa giữa "" và bạn không thể sử dụng nó nhiều hơn hai lần trong một chuỗi. Tất cả những gì nó làm là chọn bất cứ thứ gì không nằm giữa "" và thay thế nó bằng không.

Ngay cả đối với tôi nó là một chút khó hiểu, nhưng tôi cố gắng giải thích nó. ^.+?(không bất cứ điều gì TÙY CHỌN) đến đầu tiên "sau đó |Hoặc / dừng (vẫn còn nghiên cứu những gì nó thực sự có nghĩa là) đến / tại ^.đã lựa chọn gì cho đến trước 2 "sử dụng ( |stop / at). Và chọn tất cả những gì đi kèm với. +.


Vui lòng xem xét thêm mô tả về mã của bạn để chúng tôi biết nó có tác dụng gì và tại sao.
Pika the Wizard of the Whales
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.