Biểu thức Regex cắt không cuối cùng


2

Tôi có một tập lệnh với regex powershell trong đó và sau khi tôi nâng cấp từ Windows 7 lên 10, nó hoạt động khác đi.

Chế độ:

if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$'){$srv = "192.168.$srv"}

Hy vọng:

Let's say that $srv="1.0"
result: 192.168.1.0

Sau khi tôi nâng cấp nó lên Windows 10, cuối cùng nó cũng cắt số 0.

Now result will be: 192.168.1
BUT! if $srv="1.01", the result will be 192.168.1.01

Tôi đã tìm kiếm sự khác biệt regex giữa các phiên bản powershell, nhưng không tìm thấy gì. Xin vui lòng giúp đỡ :)


1
Bạn có thể hiển thị đầu ra của lệnh sau$srv = "1.0";if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$'){"192.168.$srv"}
Lieven Keersmaekers

Đầu ra là "192.168.1.0" (như mong đợi) Trong tập lệnh của tôi $ srv là $ args [0], nhưng tôi không thay đổi nó hoặc một cái gì đó trước đó.
igor

1
Do đó, nó không phải là regex và nó không phải là biến nên không có gì bạn đang hiển thị cho chúng tôi. Trừ khi bạn hiển thị một tập lệnh tối thiểu có cùng các vấn đề, tôi nghi ngờ chúng ta có thể giúp đỡ nhiều. Lưu ý rằng bằng cách tạo một tập lệnh tối thiểu như vậy, bạn có thể tìm thấy vấn đề và giải pháp cùng một lúc :)
Lieven Keersmaekers

igor, tôi khuyên bạn nên chạy tập lệnh trong trình gỡ lỗi ISE. Bước qua nó và xem những gì $srvđược thiết lập.
dangph

Câu trả lời:


0

Bạn nói đầu ra của

$ srv = "1.0"; if ($ srv -match '^ [0-9] {1,3} \. [0-9] {1,3} $') {"192.168. $ srv"}

192.168.1.0

Và nếu tôi hiểu chính xác, khi bạn sử dụng

$ srv = $ args [0]; if ($ srv -match '^ [0-9] {1,3} \. [0-9] {1,3} $') {"192.168. $ srv"}

Và vượt qua 1.0như một đối số, đầu ra là192.168.1

Cách duy nhất có thể là nếu tập lệnh của bạn xuất ra cái này ở nơi khác . Vì nó không thể đến từ iftuyên bố này .

Bạn có thể thực hiện các thay đổi sau cho tập lệnh của mình không và cho chúng tôi xem kết quả đầu ra:

$ srv = $ args [0];
"srv = $ srv";
if ($ srv -match '^ [0-9] {1,3} \. [0-9] {1,3} $') {"Bên trong IF: 192.168. $ srv"}

Cảm ơn

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.